使用Scrapy爬行时,如何处理Xpath中的不同行



我正在尝试使用Scrapy抓取一个网站的产品链接。我已经想好了如何获取所有子类别的链接,但现在当我进入显示产品的页面时,我找不到使用Xpath提取所有元素的解决方案。最初的问题是如何处理Xpath/Scrapy中的不同行号以获得所有项目?

目标页面示例:https://www.rimi.lt/e-parduotuve/lt/produktai/veganams-ir-vegetarams/c/SH-77

我正在测试Scrapy Shell上的所有东西,首先是

Xpath获取产品卡@href(此卡在Chrome中使用复制完整Xpath选项(:response.xpath('/html/body/main/section/div/div/div/div/div/div/ul/li[1]/div/a/@href').extract()下一个项目Xpath将具有递增的li[1]值:示例:

//*[@id="main"]/section/div[1]/div/div[2]/div[1]/div/div[2]/ul/li[3]/div/a
^
//*[@id="main"]/section/div[1]/div/div[2]/div[1]/div/div[2]/ul/li[2]/div/a
^

我在mySpider.py文件中声明xpath的函数:

def __init__(self):
self.declare_xpath()
#All the XPaths the spider needs to know go here
def declare_xpath(self):
self.getAllCategoriesXpath = ""
self.getAllSubCategoriesXpath = ""
self.getAllItemsXpath = '/html/body/main/nav[1]/div/ul/li[1]/a/@href'
self.TitleXpath  = ""
self.CategoryXpath = ""
self.PriceXpath = ""
self.FeaturesXpath = ""
self.DescriptionXpath = ""
self.SpecsXpath = ""

在处理Xpath和不同的行号时,忽略[x]元素,只放不带[x]的项。

示例:

//*
[@id="main"]/section/div[1]/div/div[2]/div[1]/div/div[2]/ul/li[3]/div/a/@href
^^^^^^  

如何获得所有元素:

//*[@id="main"]/section/div[1]/div/div[2]/div[1]/div/div[2]/ul/li/div/a/@href
^^^

最新更新