我正在尝试创建“通用”Xpath,这样当我运行spider时,它将能够下载列表中每个酒店的酒店名称。
这是我需要转换的XPath:
//*[@id="offerPage"]/div[3]/div[1]/div[1]/div/div/div/div/div[2]/div/div[1]/h3/a有谁能告诉我正确的方向吗?
这是他们如何在scrapy文档中实现的示例:
https://github.com/scrapy/quotesbot/blob/master/quotesbot/spiders/toscrape-xpath.py
对于文本:它们具有:
'text': quote.xpath('./span[@class="text"]/text()').extract_first(),当您打开"http://quotes.toscrape.com/“并复制文本的Xpath时,您将看到:
/html/body/div/div[2]/div[1]/div[1]/span[1]发布于 2018-08-22 21:41:24
当您查看您正在抓取的html时,仅仅使用浏览器源代码查看器中的"copy xpath“是不够的。
您需要查看html标记所具有的属性。
当然,只使用标记类型作为xpath也可以,但是如果不是要抓取的每个页面都遵循这种模式,那该怎么办呢?
您正在使用的Scrapy示例使用span的class属性精确地指向目标标记。

我建议多阅读一些关于Xpath (for example here)的内容,以了解您的搜索模式可以有多灵活。
如果您想了解更广泛的内容,那么阅读有关DOM结构的内容也会很有用。如果你需要更多的指针,请告诉我们。
https://stackoverflow.com/questions/51968013
复制相似问题