def _requests_to_follow(self, response):
if not isinstance(response, HtmlResponse):
return
seen = set()
for n, rule in enumerate(self._rules):
links = [lnk for lnk in rule.link_extractor.extract_links(response)
if lnk not in seen]
if links and rule.process_links:
links = rule.process_links(links)
for link in links:
if int(link.url.split('/')[-1])<16493: #在这里加入自己的条件,其他的不要动
print(link.url)
seen.add(link)
request = self._build_request(n, link) #通过函数构造符合规则的请求
yield rule._process_request(request, response) #返回请求
其中 link 是一个 字典 包含符合规则的url 和该url 所在位置标签的 text 例如:
<a href="/web/comic/186244">
<span>
井绳新作《老鲜肉》明日上线!
</span>
{url:/web/comic/186244, text= 井绳新作《老鲜肉》明日上线}
二.crawlspider中 规则解析器的用法
from scrapy.linkextractors import LinkExtractor
links=LinkExtractor(allow=r' \d+.html ').extract_links (response) 返回一个符合规则的 列表 如下图
[Link(url='https://www.cheat8.com/a/xitongjiqiao/2018/0227/1570.html', text='补丁绿色',
fragment='',
nofollow=False),Link(url='https://www.cheat8.com/a/xitongjiqiao/2018/0824/2891.html',
text='键过检测', fragment='', nofollow=False)]
for link in links :
url=link.url 取到所有url
注意 crawlspider中 不能重写parse方法 ,这个方法被用来 提取规则解析器中的url