【问题标题】:Scraping JSON object with beautiful soup用漂亮的汤刮 JSON 对象
【发布时间】:2020-06-14 05:14:23
【问题描述】:

背景

我正在尝试抓取这个page。基本上得到每个产品的名称,它的价格和形象。我期待在汤中看到包含该产品的 div,但我没有。所以我所做的是我在我的 chrome 浏览器中打开了 url,并在我的网络选项卡中执行检查元素后,我发现它正在进行的 GET 调用直接到这个page 以获取所有与产品相关的信息。如果您打开该 url,您将基本上看到一个 JSON 对象,并且其中有 html 字符串,其中包含产品和价格的 div。我的问题是我将如何解析这个?

尝试的解决方案 我认为一种明显的方法是将汤转换为 JSON,因此为了做到这一点,汤需要是一个字符串,而这正是我所做的。现在的问题是我的json_data 变量基本上有一个字符串。所以当我尝试做这样的事情json_data['Results'] 它给了我和错误说我只能传递整数。我不确定如何进一步进行。

如果我做错了什么,我希望得到建议和任何指示。

以下是我的代码

from bs4 import BeautifulSoup
from random_user_agent.user_agent import UserAgent
from random_user_agent.params import SoftwareName, OperatingSystem
import requests
import json
import sys


sys.stdout = open('output.html', 'wt')
page_to_scrape = 'https://shop.guess.com/en/catalog/browse/men/tanks-t-shirts/view-all/?filter=true&page=1'
software_names = [SoftwareName.CHROME.value]
operating_systems = [OperatingSystem.WINDOWS.value, OperatingSystem.LINUX.value]
user_agent_rotator = UserAgent(software_names=software_names, operating_systems=operating_systems, limit=100)
page = requests.get(page_to_scrape, headers={'User-Agent': user_agent_rotator.get_random_user_agent()})
soup = BeautifulSoup(page.content, "html.parser")
json_data = json.dumps(str(soup))
print(json_data)

【问题讨论】:

  • 您在代码中抓取的 URL 会生成一个常规产品页面,而不是我的 JSON。您确定您的考试正确反映在您的问题和代码中吗?
  • 如果我运行您的代码,json_data 会打印出空白。而soup 是一个普通的网页。
  • 你安装了bs4吗? @petezurich 你还能看到汤里的任何产品 div 吗??
  • 是的,我已经安装了 bs4。您的代码运行良好。我只是得到一个空的json_data。而soup 是常规页面,但不是 JSON。

标签: python json beautifulsoup


【解决方案1】:

错误可能是json_data 是字符串而不是dict 类型,因为json.dumps(str(soup)) 返回一个字符串。由于json_data 是字符串,我们不能做json_data['Results'] 并且要访问字符串的任何元素,我们需要传递索引并因此传递错误。

编辑

从响应中获取Results,代码如下:

json_data = json.loads(str(soup.text))
print(json_data['Results'])

如果这有帮助,请告诉我!

【讨论】:

  • 是的,这就是问题所在,如果我传递索引它可以工作,但是当我传递一个索引值时,它将返回该索引处的字符串字符,这无助于我解析
  • 您可以尝试更新的解决方案代码,如果有帮助,请告诉我?
猜你喜欢
  • 1970-01-01
  • 2017-12-23
  • 1970-01-01
  • 2017-08-15
  • 1970-01-01
  • 2018-05-22
  • 2013-11-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多