我使用scrapy shell来获取本网站子类别部分中的所有链接:https://www.dmoz.org/Computers/Programming/Languages/Python/。
可能是一个更高效的Xpath,但我提出的那个是:
//div[@id="subcategories-div"]/section/div/div/a/@href
据我在页面来源中可以看出,只有一个div
元素具有[@id="subcategories-div"]
属性,所以我从那里开始缩小,直到找到链接' s {{ 1}}。这在我在Chrome中搜索此Xpath时有效。
但是当我跑步时
href
在scrapy中,它会返回我正在寻找的链接,但由于某种原因,它还会返回response.xpath('//div[@id="subcategories-div"]/section/div/div/a/@href').extract()
为什么会发生这种情况,因为此路径中没有//*[@id="doc"]/section[8]/div/div[2]/a
个元素具有div
属性?
答案 0 :(得分:0)
我似乎无法在页面中找到任何名称为doc的id您正试图抓取,您可能没有设置启动response.xpath。如果你应该改变,你会得到相同的结果,如:
response.xpath('//*div[@id="subcategories-div"]/section/div/div/a/@href').extract()