如何使用Bs4抓取包含HTML实体的内容

时间:2020-09-20 03:49:46

标签: python json web-scraping beautifulsoup python-requests

免责声明:我是python的新手,所以我可能无法正确表达我的疑问 我正在尝试在python中使用Bs4来抓取请求响应的特定部分,我认为它是json格式的,如图所示。 Response Headers。但是,当我打印响应的内容时,它仅在response content所示的一行中打印,并且包含诸如之类的实体;和\ n,这使我无法尝试找到所需的特定部分。如何使\ n实际上执行换行符和" ;实体都转换成实际的报价,这样我就可以正确地使用Bs4刮取内容了吗?我应该在Python中使用其他刮板吗?

很抱歉,如果我的问题还不够清楚,请告诉我如何使我的疑问更清楚。

1 个答案:

答案 0 :(得分:0)

您要打印的数据看起来像json数据。您可以尝试使用具有内置json方法的requests模块。这是一个示例:

# request the endpoint
>>> res = requests.get('https://httpbin.org/get')
# <Response [200]>      '200' means a successful response

# use the json method so we can easily access the data
>>> data=res.json()     

# grab one of the values it contains using json/dict access notation
>>> data['origin']
u'99.54.....'

此外,bs4非常适合从站点中抓取 html 内容(例如,如果您要在此处访问此页面并从此页面中提取所有数据)。但是对于已经用json格式化的数据,则无需使用bs4,而可以使用上面的requests之类的东西。与html/xml数据相比,解析json数据非常容易,因此,如果数据已经采用这种格式,那么您很幸运。您也可以使用bs4进行解析,但这不是必需的:

import json
data=json.loads(str(soup))