Python 使用beautifulsoup和输出错误进行JSONdata解析

Python 使用beautifulsoup和输出错误进行JSONdata解析,python,json,python-requests,Python,Json,Python Requests,运行以下代码时会产生以下错误: import requests import json from bs4 import BeautifulSoup JSONDATA = requests.request("GET", "https://thisiscriminal.com/wp-json/criminal/v1/episodes?posts=1000000&page=1") JSONDATA = JSONDATA.json() for line in JSONDATA['posts'

运行以下代码时会产生以下错误:

import requests
import json
from bs4 import BeautifulSoup

JSONDATA = requests.request("GET", "https://thisiscriminal.com/wp-json/criminal/v1/episodes?posts=1000000&page=1")
JSONDATA = JSONDATA.json()

for line in JSONDATA['posts']:
    soup = BeautifulSoup(line['episodeNumber'])
    soup = BeautifulSoup(line['title'])
    soup = BeautifulSoup(line['audioSource'])
    soup = BeautifulSoup(line['large'])
    soup = BeautifulSoup(line['long'])
    print soup.prettify()
产生了以下错误(我已经尝试了它所建议的LXML的各种变体):

  • LXML问题
  • 一个关于不喜欢.mp3链接的问题,但这不应该是一个问题,因为此链接是正确的
  • 在查找“大”缩略图时遇到问题,但使用标题、音频源等的等效字段不会产生相同的错误,但查看网站数据时,它是正确的框
输出误差 /home/leo/.local/lib/python2.7/site packages/bs4/init.py:335:
用户警告:
“”看起来像一个URL。Beauty Soup不是HTTP客户端。您可能应该使用类似HTTP客户端的请求来获取URL后面的文档,并将该文档提供给Beautiful Soup。 “那份文件很漂亮。”%decoded\u 回溯(最近一次呼叫最后一次): 文件“/test2.py”,第20行,在 汤=美丽的汤(第['large'行])
KeyError:“large”

如果您试图只获取json中的数据,这将起作用

import pandas as pd

import requests
import json
from bs4 import BeautifulSoup

JSONDATA = requests.request("GET", "https://thisiscriminal.com/wp-json/criminal/v1/episodes?posts=1000000&page=1")
JSONDATA = JSONDATA.json()

#loads the Json in a dataframe
df = pd.io.json.json_normalize(JSONDATA['posts'])
df.to_csv('posts.csv')
lxml问题将通过以下方式解决: BeautifulSoup(第['EpiodeNumber','lxml'行) 这是因为BeautifulSoup需要一个html解析器来生成一个soup对象。 如果你没有lxml,那就做吧

pip install lxml
第二个警告是关于您传递一个url来创建soup对象,但该对象不起作用,因为正如警告所说,它不知道如何下载链接

最后一个错误是由于链接json没有名为“large”的键


您需要一个异常块。

非常感谢。这似乎解决了LXML问题。mp3链接没问题,我想我不希望python播放或执行媒体文件,只要把它传递给Kodi media Center,它就会这样做。至于图像,看看在线json查看器——图像和描述(即大和长)比“标题”要多放几个字符。我应该如何在代码中引用它?大而长的嵌套在“image”dict中,所以您必须执行,行['image']['large'],这只是另一个想法:导出到.CSV建议。我得到了以下错误:文件“pandas/_libs/writers.pyx”,第55行,在pandas._libs.writers.write_csv_行UnicodeEncodeError:“ascii”编解码器无法对位置30处的字符u'\xa0'进行编码:序号不在范围内(128)当我以这种方式解析同一网页并与其他项目具有相同的依赖关系时,此字符是否会导致问题?请尝试df.to_csv('posts.csv',encoding='utf-8'),您使用的是Python 2?如果答案解决了您的问题,请标记为是
pip install lxml