首页 > 编程问答 >Medium.com 无效的 Json?

Medium.com 无效的 Json?

时间:2024-07-31 16:31:20浏览次数:13  
标签:python web-scraping

我试图从 Medium.com 获取最新的帖子,例如,我转到这里

https://medium.com/circle-blog/latest?format=json

但是当我复制并粘贴整个内容时JSON 到 JSONEditorOnline.org 时,我收到错误消息

Error: Parse error on line 1:
])}while(1);</x>{"su
^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[', got ']'

我意识到错误是由于前面的随机内容造成的

])}while(1);</x>

那么我如何使用 Python 删除它?

删除后,我想将其转储到JSON 文件

with open('medium.json', 'w') as json1:
    json1.write(json.dumps(JSONWITHWHILE(1)REMOVED))

我该如何做呢?


Medium.com 在 URL 中添加 ?format=json 时不会返回有效的 JSON 响应。它通过在实际 JSON 数据之前添加 JavaScript 代码来实现这一点。要使用 Python 提取 JSON 数据,可以使用如下正则表达式:

import re
import requests
import json

def get_medium_posts(url):
  """从给定的 Medium URL 中提取 JSON 数据。"""

  response = requests.get(url)
  response.raise_for_status()

  # 使用正则表达式提取 JSON 数据
  match = re.search(r'({.+})', response.text)
  if match:
    json_data = json.loads(match.group(1))
    return json_data
  else:
    raise ValueError("找不到有效的 JSON 数据。")

# 例如,要获取来自 https://medium.com/circle-blog/latest 的帖子:
url = "https://medium.com/circle-blog/latest?format=json"
posts = get_medium_posts(url)

# 现在可以访问 posts 字典中的 JSON 数据
# 例如,要打印第一个帖子的标题:
print(posts['payload']['posts'][0]['title'])

# 可以将 JSON 数据保存到文件中:
with open('medium.json', 'w') as f:
  json.dump(posts, f, indent=2) # 使用 indent 使其更具可读性

这段代码首先使用 requests.get() 获取给定 URL 的内容。然后,它使用正则表达式 ({.+}) 搜索第一个出现的 { 和最后一个出现的 } 之间的文本,这标志着实际 JSON 数据的开始和结束。如果找到匹配项,则使用 json.loads() 将提取的字符串解析为 Python 字典。

此方法允许从 Medium.com URL 中有效地提取和处理 JSON 数据,而无需担心不必要的 JavaScript 代码。

标签:python,web-scraping
From: 52978113

相关文章

  • Python - Class Decorators
    Wehaveusedfunctionstodecoratefunctionsandtodecorateclasses.Now,wewillseehowtodefineaclassasadecorator.Atthestartofthischapter,inthedefinitionofdecorator,wehadseenthatadecoratorisacallable;acallableisanyobject......
  • 基于Python的高校成绩分析【源码+LW+PPT+部署讲解】
    作者主页:编程千纸鹤作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待......
  • 基于Python网络爬虫的电子产品信息查询可视化系统
    作者主页:编程千纸鹤作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待......
  • [SUCTF 2019]Pythonginx (unicode转IDNA域名分割漏洞)
    代码我看到这两个就感觉有问题了,第一个转编码这个搜了一下是unicode转idna的问题,第二个urlopen是Python标准库中urllib.request模块中的一个函数,用于向指定的URL发送HTTP请求并获取响应参考文章:https://xz.aliyun.com/t/6070?time__1311=n4%2BxnD0DgDcmG%3DrDsYoxCqiIQ7KDtH......
  • 基于Python的高校成绩分析【源码+LW+PPT+部署讲解】
    作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待与各位高校教师、企......
  • 基于Python网络爬虫的电子产品信息查询可视化系统
    作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待与各位高校教师、企业......
  • 使用 Python 读取 .xlsx 文件的最快方法
    我正在尝试使用Python将.xlsx文件中的数据读入MySQL数据库。这是我的代码:wb=openpyxl.load_workbook(filename="file",read_only=True)ws=wb['MyWorksheet']conn=MySQLdb.connect()cursor=conn.cursor()cursor.execute("SETautocommit=0"......
  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-60 - 判断元素是否显示 - 下篇
    1.简介有些页面元素的生命周期如同流星一闪,昙花一现。我们也不知道这个元素在没在页面中出现过,为了捕获这一美好瞬间,让其成为永恒。我们就来判断元素是否显示出现过。在操作元素之前,可以先判断元素的状态。判断元素操作状态也可以用于断言。2.常用的元素判断方法2.1page对象调......
  • 是否有可能在Python中获取客户端计算机的位置
    我想编写一个程序,用python查找客户端计算机的位置。不过,我不介意它的格式如何。我到处尝试过一些东西,但老实说,我对这类事情了解不多,所以我真的不知道从哪里开始。|||我想简单地运行该程序,并将运行该程序的客户端计算机的位置写入控制台。Iwouldliketosimplyrunt......
  • Python:使用 Selenium WebDriver 无法在客户端打开浏览器
    我使用SeleniumWebDriver开发了一个应用程序来打开一些页面。它在本地工作得很好,但我还需要在客户端启动浏览器。我使用Apache2underUbuntu18部署了应用程序。driver=webdriver.Chrome(executable_path="chromedriver",chrome_options=ch......