rules = {
'sina':(
Rule(LinkExtractor(allow='/\d+-\d+-\d+\/.*?-.*?.shtml', deny=('http://search.sina.com.cn/.*?')),
callback='parse_item', follow=True),
)
}
如上,目的是从目标页面解析出符合条件的链接
目标页面示例:https://feed.sina.com.cn/api/roll/get?pageid=121&lid=1356&num=20&versionNumber=1.2.4&page=1&encode=utf-8&callback=feedCardJsonpCallback&_=1545017197742
试了很多正则的方法,都匹配不出来"urls":"[\"https:\\\/\\\/news.sina.com.cn\\\/o\\\/2018-12-18\\\/doc-ihqhqcir7816653.shtml\"]"
这里面的链接,正则表达式测试过没问题,但是在scrapy 的Rule里就不行
方便起见,先贴出你的部分源码:
不是正则的问题,我试验了
LinkExtractor(allow=())
,仍然不会进入parse_item
函数。查看scrapy的源码可知,scrapy\spiders\crawl.py,line 56, _requests_to_follow函数
如果response不是HtmlResponse类型,那么不做进一步解析。
题主的连接返回的不是html页面。