我正在使用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),
)
但我没有得到任何要求。 任何人都建议我应该使用什么规则? 谢谢!
答案 0 :(得分:0)
您的restrict_xpaths表达式中存在语法错误。尝试
restrict_xpaths=('//a[@class="navigate-target navigate-next"]')
总是值得使用scrapy shell
尝试使用xpath,或者使用firebug中的$ x for firefox。
<强>更新强>
我应该给你这个xpath
restrict_xpaths=('//a[@class="navigate-target navigate-next"]/@href')
使用Firebug中的$ x命令可以正常工作。正如你所说,没有使用scrapy shell。看起来页面的一部分不是普通HTML的一部分,而是在运行时生成的。除非你能找到另一个URL,否则你可能需要使用像Selenium这样的东西,它在包含动态内容的标准浏览器中呈现页面。然后,Scrapy可以解析HTML,包括您之后的链接。看看这个question。