Scrapy爬取时如何处理Xpath中的不同行?
How to deal with different rows in Xpath while crawling with Scrapy?
我正在尝试使用 Scrapy 抓取网站的产品链接。我已经想出了如何获取所有子类别的链接,但是现在当我进入显示产品的页面时,我找不到使用 Xpath 提取所有元素的解决方案。
最初的问题是如何处理 Xpath / Scrapy 中的不同行号以获取所有项目?
目标页面示例:https://www.rimi.lt/e-parduotuve/lt/produktai/veganams-ir-vegetarams/c/SH-77
我首先在 Scrapy 上测试所有内容 Shell
获取商品名片的Xpath @href(这个是在Chrome中使用copy Full 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
^^^
我正在尝试使用 Scrapy 抓取网站的产品链接。我已经想出了如何获取所有子类别的链接,但是现在当我进入显示产品的页面时,我找不到使用 Xpath 提取所有元素的解决方案。 最初的问题是如何处理 Xpath / Scrapy 中的不同行号以获取所有项目?
目标页面示例:https://www.rimi.lt/e-parduotuve/lt/produktai/veganams-ir-vegetarams/c/SH-77
我首先在 Scrapy 上测试所有内容 Shell
获取商品名片的Xpath @href(这个是在Chrome中使用copy Full 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
^^^