我正在使用scrapy,并试图提出一个restrict_xpaths规则,这样爬虫将总是只去下一个图像。
我的目标是不断地抓取下一个。
我试过了:
name = "FlickerSpider"
allowed_domains = ["flickr.com"]
start_urls = [
"https://www.flickr.com/photos/indymcduff/6632326011/in/photolist-9uQnYG-9SnqTY-qjXTHY-onEUN5-5d72ri-tgMKAY-8qaRQL-on6ZLu-bnMg2B-8AVUgV-b75pst/"
]
rules = (
#crawl to next image
Rule(SgmlLinkExtractor(allow=(r'photos'),restrict_xpaths=('//class[@data="navigate-target navigate-next")]')) ,callback='parse_item', follow=True),
)但我没有收到任何请求。有人建议我应该使用什么规则吗?谢谢!
发布于 2015-11-19 23:59:58
您的restrict_xpaths表达式中存在语法错误。试一试
restrict_xpaths=('//a[@class="navigate-target navigate-next"]')
在Firebug for firefox中使用scrapy shell或$x来试用您的xpath总是值得的。当规则中出现类似这样的xpath问题时,它就会默默地失败。
更新
我应该给你这个xpath
restrict_xpaths=('//a[@class="navigate-target navigate-next"]/@href')
在Firebug中使用$x命令可以很好地工作。如你所说,它不适用于scrapy shell。页面的这一部分看起来不是普通HTML的一部分,而是在运行时生成的。除非您能找到替代的URL,否则您可能不得不使用Selenium之类的东西,它会在包含动态内容的标准浏览器中呈现页面。然后,Scrapy可以解析该HTML,包括您要查找的链接。看看这个question。
https://stackoverflow.com/questions/33789607
复制相似问题