Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我的第一个scrapy xpath选择器_Python_Xpath_Web Scraping_Scrapy_Scrapy Spider - Fatal编程技术网

Python 我的第一个scrapy xpath选择器

Python 我的第一个scrapy xpath选择器,python,xpath,web-scraping,scrapy,scrapy-spider,Python,Xpath,Web Scraping,Scrapy,Scrapy Spider,我对这一点非常陌生,一直在努力让我的头围绕我的第一个选择。有人能帮我吗?我正在尝试从此页面提取数据: div class=listing clearfix shelfListing下的所有信息,但我似乎不知道如何格式化response.xpath() 我已经成功地启动了scrapy控制台,但无论我在response.xpath()中键入什么,我似乎都无法选择正确的节点。我知道这很有效,因为当我打字的时候 >>>response.xpath('//div[@class="con

我对这一点非常陌生,一直在努力让我的头围绕我的第一个选择。有人能帮我吗?我正在尝试从此页面提取数据:

div class=listing clearfix shelfListing下的所有信息,但我似乎不知道如何格式化
response.xpath()

我已经成功地启动了scrapy控制台,但无论我在
response.xpath()
中键入什么,我似乎都无法选择正确的节点。我知道这很有效,因为当我打字的时候

>>>response.xpath('//div[@class="container"]')
我得到了答复。然而,我不知道如何导航到listsing cleardix shelflisting。我希望,一旦我得到这一点,我可以继续我的方式通过蜘蛛


PS我想知道是否不能扫描这个网站-所有者是否可以阻止蜘蛛

带有
列表
类(和
id
)的
div
中的内容通过XHR请求异步加载。换句话说,
Scrapy
获取的html代码不包含它:

$ scrapy shell http://groceries.asda.com/asda-webstore/landing/home.shtml?cmpid=ahc--ghs-d1--asdacom-dsk-_-hp#/shelf/1215337195041/1/so_false
>>> response.xpath('//div[@id="listings"]')
[]
使用浏览器开发工具,您可以看到请求通过一组GET参数转到url

一个选项是模拟该请求并解析生成的JSON:

如何做到这一点实际上是另一个问题的一部分


下面是一个使用软件包的可能解决方案:

印刷品:

Kellogg's Coco Pops
Kelloggs Rice Krispies
Kellogg's Coco Pops Croco Copters
...

带有
清单
类(和
id
)的
div
中的内容通过XHR请求异步加载。换句话说,
Scrapy
获取的html代码不包含它:

$ scrapy shell http://groceries.asda.com/asda-webstore/landing/home.shtml?cmpid=ahc--ghs-d1--asdacom-dsk-_-hp#/shelf/1215337195041/1/so_false
>>> response.xpath('//div[@id="listings"]')
[]
使用浏览器开发工具,您可以看到请求通过一组GET参数转到url

一个选项是模拟该请求并解析生成的JSON:

如何做到这一点实际上是另一个问题的一部分


下面是一个使用软件包的可能解决方案:

印刷品:

Kellogg's Coco Pops
Kelloggs Rice Krispies
Kellogg's Coco Pops Croco Copters
...

你好,Alecxe,非常感谢你澄清这一点。我以为我是在尝试X路径变体。因此,您的建议是使用一些实际缓存页面的工具,然后从中提取数据?你有什么想法吗?再次感谢。@jaspalinghrathour好吧,是的,另一个选择是使用像
selenium
这样的工具启动真正的浏览器,基本上为您提供所见即所得。你可以在这里使用真正的浏览器吗?我想这是一种方法。看看是否可以导出源代码,然后运行一个脚本来搜索标记或正则表达式。最终,我想自动化查询以每天运行并填充sql数据库,但我想我离此还有几步之遥:)@jaspalinghrathour因此,我建议两种方法:第一,首选方法-在python中模拟get请求(例如,使用
请求
模块)并解析json响应中的数据。另一种方法是使用
selenium
并从HTML源代码中提取数据。选择一个,我会尽力为您提供解决方案。嗨,alecxe,我非常愿意选择选项1,因为这似乎是两个选项中最具流动性的。我不是python专家,但我会很高兴看到正确的指针。正如您所知,目标是从页面中提取产品信息,并将其输入到json或csv中,这样就可以将其插入到数据库中。您好,Alecxe,非常感谢您的澄清。我以为我是在尝试X路径变体。因此,您的建议是使用一些实际缓存页面的工具,然后从中提取数据?你有什么想法吗?再次感谢。@jaspalinghrathour好吧,是的,另一个选择是使用像
selenium
这样的工具启动真正的浏览器,基本上为您提供所见即所得。你可以在这里使用真正的浏览器吗?我想这是一种方法。看看是否可以导出源代码,然后运行一个脚本来搜索标记或正则表达式。最终,我想自动化查询以每天运行并填充sql数据库,但我想我离此还有几步之遥:)@jaspalinghrathour因此,我建议两种方法:第一,首选方法-在python中模拟get请求(例如,使用
请求
模块)并解析json响应中的数据。另一种方法是使用
selenium
并从HTML源代码中提取数据。选择一个,我会尽力为您提供解决方案。嗨,alecxe,我非常愿意选择选项1,因为这似乎是两个选项中最具流动性的。我不是python专家,但我会很高兴看到正确的指针。正如您所知,目标是从页面中提取产品信息,并将其输入到json或csv中,这样就可以将其插入到数据库中。