scrapy - 试图获得“下一个”网址

时间:2015-11-18 20:20:24

标签: python scrapy

我正在使用scrapy并尝试提出restrict_xpaths规则,因此抓取工具将始终只显示下一张图片。

我从这张图片开始: https://www.flickr.com/photos/safaripartners/4838428819/in/photolist-qtC2e5-5iA4ZQ-8nydjx-zf1rvk-wvDaHE-8nBnhu-baArRv-36WzbG-2hLUaa-v6Mw1k-d33z5A-8nBniU-6jTfkT-6W6Sbu-5CtFsA-6RZZ5K-36WYuS-5DatmT-d5Qo1A-nMktKL-9wF1aF-hfuXhF-eLaQn5-5tR4Ri-prLcsi

我的目标是不断刮掉下一个。

我试过了:

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),
)

但我没有得到任何要求。 任何人都建议我应该使用什么规则? 谢谢!

1 个答案:

答案 0 :(得分:0)

您的restrict_xpaths表达式中存在语法错误。尝试

restrict_xpaths=('//a[@class="navigate-target navigate-next"]')

总是值得使用scrapy shell尝试使用xpath,或者使用firebug中的$ x for firefox。

中,如果规则中存在这样的xpath问题,它就会无声地失败。

<强>更新

我应该给你这个xpath

restrict_xpaths=('//a[@class="navigate-target navigate-next"]/@href')

使用Firebug中的$ x命令可以正常工作。正如你所说,没有使用scrapy shell。看起来页面的一部分不是普通HTML的一部分,而是在运行时生成的。除非你能找到另一个URL,否则你可能需要使用像Selenium这样的东西,它在包含动态内容的标准浏览器中呈现页面。然后,Scrapy可以解析HTML,包括您之后的链接。看看这个question