Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.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

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
Scrapy xpath选择器不会选择所有HTML标记_Html_Xpath_Web Scraping_Scrapy - Fatal编程技术网

Scrapy xpath选择器不会选择所有HTML标记

Scrapy xpath选择器不会选择所有HTML标记,html,xpath,web-scraping,scrapy,Html,Xpath,Web Scraping,Scrapy,我正在尝试使用Scrapy python库来获取所有产品名称 这是我的解析函数 def parseWalmart(自我,响应): 打印(“内部解析沃尔玛”) 对于响应中的产品.xpath('//div[@id=“searchProductResult”]/div[@class=“search result listview items”]//div[以(@data tl id,“ProductTileListView-”)开头]): 印刷品(产品) product_name=product.x

我正在尝试使用Scrapy python库来获取所有产品名称

这是我的解析函数

def parseWalmart(自我,响应):
打印(“内部解析沃尔玛”)
对于响应中的产品.xpath('//div[@id=“searchProductResult”]/div[@class=“search result listview items”]//div[以(@data tl id,“ProductTileListView-”)开头]):
印刷品(产品)
product_name=product.xpath('.//div[contains(@class,“搜索结果产品标题列表视图”)]//a//span//text()')。extract()
product_page=product.xpath('.//div[contains(@class,“搜索结果产品标题列表视图”)]///a/@href').extract()
产品名称=“加入(产品名称)
打印(产品名称)
打印(“------------------------------------”

因为DOM中最初只有4个以“ProductTileListView-”开头的div。但是,您可以在页面的脚本中找到所有产品信息

以下是我如何获得产品的所有信息


进口稀土
导入json
data=re.findall(“\'items\”:(.+?),“secondaryItems\”,response.body.decode(“utf-8”),re.S)
products\u json=json.loads(数据[0])
len(ls)#返回20
请注意,products数组以“items”开头,以“secondaryItems”结尾

一种产品的结构

{
“产品ID”:“2H53I08Z1K78”,
“usItemId”:“23422902”,
“产品类型”:“常规”,
“标题”:“看门狗(PS3)”,
....
“imageUrl”:https://i5.walmartimages.com/asr/70aecbb1-5dbf-4a64-a86d-134a8fc7edee_2.59805d79db07665c20cc4e4fadc35743.jpeg?odnHeight=180&odnWidth=180&odnBg=ffffff",
“productPageUrl”:“/ip/Watch-Dogs-PS3/23422902”,
“upc”:“0000888834804”,
}

我在@darbulix的GET请求中没有看到json“items”,我相信屏幕截图说明了您需要的一切。我是说,我不了解您在开发工具上获得的东西。我知道如何使用inspector,但当我进入网络时,我无法确切了解您在响应中获得的东西。您是否可以浏览一下达到这一点所采取的步骤?找到正确的文档,这正是服务器返回的文档。如果文档为空,则强制浏览器重新加载页面中的所有资源。你可能想把它打印出来。