Scrapy中LinkExtractor的页面过滤规则说明
LinkExtractor是Scrapy中的一个类,用于在爬虫中提取需要爬取的URL链接。它具有许多参数,可以根据需要配置,以过滤指定规则的链接。
LinkExtractor类的构造函数有以下几个参数:
- allow:正则表达式,表示允许提取的URL链接的正则匹配规则。
- deny:正则表达式,表示不允许提取的URL链接的正则匹配规则。
- allow_domains:允许的域名列表,如果链接的域名不在这个列表中,则不会被提取。
- deny_domains:不允许的域名列表,如果链接的域名在这个列表中,则不会被提取。
- restrict_xpaths:XPath表达式,表示只有在指定的XPath下提取的链接才会被保留。
- restrict_css:CSS选择器,表示只有在指定的CSS选择器下提取的链接才会被保留。
- restrict_text:正则表达式,表示只有链接的文本内容匹配成功的才会被保留。
- tags:提取链接的HTML标签,默认为['a', 'area']。
- attrs:提取链接的HTML属性,默认为['href']。
下面的例子将详细介绍LinkExtractor的各种使用方式:
1. 使用allow参数过滤链接:
from scrapy.linkextractors import LinkExtractor # 提取所有以example.com开头的URL链接 link_extractor = LinkExtractor(allow=r'^http://www.example.com')
2. 使用deny参数过滤链接:
from scrapy.linkextractors import LinkExtractor # 提取所有不以example.com开头的URL链接 link_extractor = LinkExtractor(deny=r'^http://www.example.com')
3. 使用allow_domains参数过滤链接:
from scrapy.linkextractors import LinkExtractor # 只提取指定域名下的链接 link_extractor = LinkExtractor(allow_domains=['example.com'])
4. 使用deny_domains参数过滤链接:
from scrapy.linkextractors import LinkExtractor # 不提取指定域名下的链接 link_extractor = LinkExtractor(deny_domains=['example.com'])
5. 使用restrict_xpaths参数过滤链接:
from scrapy.linkextractors import LinkExtractor # 只提取xpath匹配的部分下的链接 link_extractor = LinkExtractor(restrict_xpaths=['//div[@class="content"]'])
6. 使用restrict_css参数过滤链接:
from scrapy.linkextractors import LinkExtractor # 只提取CSS选择器匹配的部分下的链接 link_extractor = LinkExtractor(restrict_css=['div.content'])
7. 使用restrict_text参数过滤链接:
from scrapy.linkextractors import LinkExtractor # 只提取链接的文本内容匹配成功的链接 link_extractor = LinkExtractor(restrict_text=r'(news|article)')
8. 使用tags和attrs参数提取自定义标签和属性的链接:
from scrapy.linkextractors import LinkExtractor # 只提取img标签下的src属性值作为链接 link_extractor = LinkExtractor(tags='img', attrs='src')
以上是LinkExtractor类的常见用法,它可以根据传入的参数过滤链接,从而只提取满足指定规则的URL链接。在Scrapy爬虫中,LinkExtractor通常与Rule类一起使用,用于指定要提取的链接的规则和处理方法。
