使用LinkExtractor 提取链接
提取链接的两种方法:
SelectorLinkExtractor之前的代码是使用的Selector,这里就不再做介绍了,开始LinkExtractor的学习
1.使用LinkExtractor
from scrapy.linkextractors import LinkExtractor# 提取链接 # 下一页的url在 ul.pager > li.next > a 里面 # next_url = response.css('ul.pager li.next a::attr(href)').extract_first() # if next_url: # # 如果找到下一页的url,得到绝对路径,构造新的Response对象 # next_url = response.urljoin(next_url) # yield scrapy.Request(next_url, callback=self.parse) le = LinkExtractor(restrict_css='ul.pager li.next') links = le.extract_links(response) if links: next_url = links[0].url yield scrapy.Request(next_url,callback=self.parse) 描述提取规则LinkExtractor构造器参数:
allow接收一个正则表达式或一个正则表达式列表,提取绝对url与正则表达式匹配的链接。如果该参数为空(默认),就提取全部链接。
deny
接收一个正在则表达式或一个正则表达式列表,与allow相反,排除绝对url与正则表达式匹配的链接。allow_domains
接收一个域名或一个域名列表,提取到指定域的链接
deny_domains
猜到了吧,与allow_domains相反,排除指定域的链接restrict_paths
接收一个XPath表达式或一个XPath表达式列表,提取XPath表达式选中区域下的链接restrict_css
接收一个CSS选择器或一个CSS选择器列表,提取CSS选择器选中区域下的链接tags
接收一个标签/标签列表,提取指定标签内的链接,默认为 ['a','area']attrs
接收一个属性/属性列表,提取指定属性内的链接,默认为 ['href']process_value
接收一个形如func(value)的回调函数,如果传递了该参数,LinkExtractor将调用该回调函数对提取的每一个链接进行处理,回调函数正常情况下应返回一个字符串,想要抛弃所处理的链接时,返回None免责声明:文章源自网络,版权归原作者所有,如有侵犯联系删除。