【问题标题】:beautifulsoup4 find_all not finding any data on Walmart grocery websitebeautifulsoup4 find_all 在沃尔玛杂货店网站上找不到任何数据
【发布时间】:2021-08-22 23:31:00
【问题描述】:

我试图从链接到here 的 url 中抓取一些基本的产品信息,但是 bs4 find_all 命令在给定与产品 div 关联的类的名称的情况下找不到任何数据。具体来说,我正在尝试:

url = https://www.walmart.com/grocery/browse/Cereal-&-Breakfast-Food?aisle=1255027787111_1255027787501
r = requests.get(url)
soup = BeautifulSoup(r.content, 'lxml')
product_list = soup.find_all('div', class_='productListTile')
print(product_list)

但这会打印一个空列表[]。检查 Chrome 上的网页后,我知道“productListTile”是正确的类名。知道我做错了什么吗?

【问题讨论】:

  • 您是否尝试打印r.content?它是正确的html吗?
  • 好主意 - 它打印出一些 html,但与我在检查网页时在 Chrome 中看到的内容不匹配。您能否使用此代码获得正确的输出?
  • 也许该网站不想被抓取,所以它使用了反机器人。也尝试打印r.text 并检查结果。

标签: python web-scraping beautifulsoup python-requests


【解决方案1】:

网页抓取技术因网站而异。在这种情况下,您可以使用 selenium,这是一个不错的选择,在这里我将添加另一种方法来处理美丽的汤,这对我很有帮助。

在这种情况下,请检查网页,然后选择网络,请刷新页面。

然后按类型排序: 在下图中,我用红色标记了他们为从后端获取数据而调用的 API。因此,您可以直接调用后端 API 来获取播放器的数据。

检查“标头”,您将看到 API 端点,在预览中,您可以看到 JSON 格式的 API 响应。

现在,如果您想获取图像,请检查您将看到图像的来源,您可以下载图像和带有 id 的地图。

【讨论】:

    【解决方案2】:

    您很可能需要使用 Selenium。 Beautiful Soup 请求被重定向到“验证您的身份”页面。

    这是一个与此问题非常相似的问题,其中包含 Selenium 和 Beautiful Soup 协同工作以刮掉沃尔玛的代码

    python web scraping using beautiful soup is not working

    【讨论】:

      猜你喜欢
      • 2019-02-07
      • 2017-10-03
      • 1970-01-01
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      • 2015-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多