1. rule规则:
rule规则的参数
allow:满足括号中“正则表达式”的值会被提取,如果为空,则全部匹配。
deny:与这个正则表达式(或正则表达式列表)不匹配的URL一定不提取。
allow_domains:会被提取的链接的domains。
deny_domains:一定不会被提取链接的domains。
restrict_xpaths:使用xpath表达式,和allow共同作用过滤链接。还有一个类似的restrict_css
classscrapy.contrib.spiders.
Rule
(link_extractor, callback=None, cb_kwargs=None, follow=None, process_links=None, process_request=None)
cb_kwargs
包含传递给回调函数的参数(keyword argument)的字典。
follow
是一个布尔(boolean)值,指定了根据该规则从response提取的链接是否需要跟进。 如果 callback
为None, follow
默认设置为 True
,否则默认为 False
。
process_links
是一个callable或string(该spider中同名的函数将会被调用)。 从link_extractor中获取到链接列表时将会调用该函数。该方法主要用来过滤。
process_request
是一个callable或string(该spider中同名的函数将会被调用)。 该规则提取到每个request时都会调用该函数。该函数必须返回一个request或者None。 (用来过滤request)
2. def parse_start_url(self,response):
当start_url的请求返回时,该方法被调用。 该方法分析最初的返回值并必须返回一个 Item
对象或者 一个 Request
对象或者 一个可迭代的包含二者对象。
例:补全相应中的链接 相对链接变成绝对链接。
def parse_start_url(self, response): urls = response.xpath('//div[@class="article"]//a/@href').extract() for url in urls: if 'https' not in url: # 去除多余的链接 url = response.urljoin(url) # 补全 print(url) yield scrapy.Request(url)