我已经在脚本标签(例如:
)中收集了JSON数据。 <script>window.__APOLLO_STATE__ = {...some JSON data here...}<\script>
但是,在解析时,它显示以下错误消息:
第1行解析错误: ... null,“ meterPost({\” postId \“:\” 40d2d0d ----------------------- ^ 期望'EOF','}',':',',',']'处于'undefined'
第一步是使用请求和BeautifulSoup收集页面数据:
headers = requests.utils.default_headers()
headers.update({
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0',
})
link = "https://medium.com/@mvmurthy/full-stack-hello-world-voting-ethereum-dapp-tutorial-part-1-40d2d0d807c2"
request_link = requests.get(link, headers=headers)
request_content = BeautifulSoup(request_link.content,'html.parser')
现在,当我从Jupyter Notebook的window.__APOLLO_STATE__
的输出中直接复制request_content
的值并将其粘贴到在线json-viewer时,它可以正常工作。但是,我不能那样工作,对吗?我得收起来因此,我尝试使用以下代码来做到这一点:
def json_response(content):
for tag in content.find_all('script'):
if 'window.__APOLLO_STATE__' in tag.text:
data = tag.text
return data[26:]
json_data = json.loads(json_response(request_content))
但是,json_data
的值在联机JSON查看器中不起作用,并显示解析错误。这里缺少什么?以及如何解决该问题以便可以将其保存在JSON文件中?