Scrapy中LinkExtractor的链接点击规则解析
LinkExtractor是Scrapy中用于解析和提取链接的一个类。它可以根据指定的规则从响应中提取出符合要求的URL链接,并返回一个链接的迭代器。在Scrapy中,LinkExtractor通常与Rule一起使用,用于指定要提取的链接的规则。
LinkExtractor的常用参数:
1. allow(str或list):指定URL的正则表达式或正则表达式列表。只有匹配的URL才会被提取。
2. deny(str或list):指定URL的正则表达式或正则表达式列表。匹配到的URL将被过滤掉,不会被提取。
3. allow_domains(str或list):指定可允许的域名。只有属于这些域名的URL才会被提取。
4. deny_domains(str或list):指定不允许的域名。属于这些域名的URL将被过滤掉,不会被提取。
5. restrict_xpaths(str或list):指定XPath的表达式。只有匹配的URL才会被提取。
6. restrict_css(str或list):指定CSS选择器的表达式。只有匹配的URL才会被提取。
7. tags(str或list):指定链接所在的HTML标签名。只有匹配的标签下的链接才会被提取。
8. attrs(dict):指定链接所在的标签属性名和属性值。只有匹配的属性才会被提取。
下面是一个使用LinkExtractor的例子:
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
class MySpider(CrawlSpider):
name = 'example'
allowed_domains = ['example.com']
start_urls = ['http://www.example.com']
rules = [
Rule(LinkExtractor(allow=r'/page/'), callback='parse_page', follow=True),
]
def parse_page(self, response):
# 这里可以处理提取到的链接的响应内容
pass
在上面的例子中,我们创建了一个名为MySpider的爬虫,并设置了爬取的起始URL为http://www.example.com。使用LinkExtractor创建了一个规则,并且将其添加到了Rule中,规定了需要提取的链接的规则。此处的链接规则使用了正则表达式,只要URL中包含/page/即可匹配。
当爬虫开始运行时,它会首先访问http://www.example.com,然后会根据规则提取符合要求的链接。对于每一个提取到的链接,爬虫会调用parse_page方法进行处理。通过response参数可以获取到链接对应的响应内容,然后可以在parse_page方法中提取所需的数据。
总结:Scrapy中的LinkExtractor是一个非常实用的工具,它可以根据指定的规则从响应中提取出符合要求的URL链接,并返回一个链接的迭代器。在实际开发中,我们可以根据具体的需求来设置LinkExtractor的参数,从而灵活地提取需要的链接。
