抓取沃尔玛搜索结果Python

问题描述 投票:0回答:2

我正在尝试抓取沃尔玛上的搜索结果。

例如,让我们进入域“https://www.walmart.com/search/?query=coffee%20machine

并尝试从类名为

search-product-result
的元素中提取文本,全部用 python 编写。

我已尝试

selenium
,但系统要求我验证我的身份。我尝试过
requests
,但我从沃尔玛得到了禁止页面。我尝试过其他库,但我已经没有想法了。有什么建议吗?

python python-3.x selenium web-scraping python-requests
2个回答
1
投票

此 URL 中的数据正在由 JavaScript 加载。所以

beautifulsoup
在这种情况下不起作用。

但是,页面显示的数据以 JSON 字符串形式存在于

<script>
标签内,其 HTML 代码中带有
id=searchContent

我已经从 HTML 代码中提取了

<script>
,进行了一些剥离并将文本转换为 JSON。您可以从该 JSON 中提取您需要的任何数据。

这是打印搜索结果的产品 ID 的代码。

from bs4 import BeautifulSoup
import requests
import json

headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36"}
url = 'https://www.walmart.com/search?query=coffee%20machine'

r = requests.get(url, headers=headers)
soup = BeautifulSoup(r.text, 'lxml')
s = str(soup.find('script', {'id': 'searchContent'}))
s = s.strip('<script id="searchContent" type="application/json"></script>')
j = json.loads(s)
x = j['searchContent']['preso']['items']


for i in x:
    print(i['productId'])

输出产品 ID。

2RYLQXVZ80E8
7EYUEQ82RMBP
7A3VDQNS5R36
22GRP3PGSY4A
238DLP3R0M3W
52NMIX2M8SC5
1R4H630LRNSE
.
.
.

0
投票

如果您在尝试从 Walmart 抓取搜索结果时被阻止并且需要数据来工作,我构建了 Walmart Search API,只需通过 API 调用即可获取任何查询的搜索结果中的产品数据。您可以点击链接查看文档。有一个包含 100 个请求的免费套餐。

© www.soinside.com 2019 - 2024. All rights reserved.