首页 > 编程问答 >使用 python 和 json 抓取该网站的正确 URL 是什么?

使用 python 和 json 抓取该网站的正确 URL 是什么?

时间:2024-08-04 15:53:45浏览次数:10  
标签:python json web-scraping

试图抓取这个网站--> https://ucr.gov/enforcement/1000511 它曾经使用下面的代码,然后停止了。无法获取响应中的 json 或任何内容。

query = "1000511"

url = 'https://ucr.gov/api/enforcement/{}'.format(query)


headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36',
    'Accept': 'application/json, text/plain, */*',
    'Accept-Language': 'en-US,en;q=0.9',
    'Referer': 'https://ucr.gov/enforcement/{}'.format(query),
    'Cache-Control': 'no-cache,no-store,must-revalidate,max-age=0,private',
    'content-type': 'application/json;charset=UTF-8',
    'sec-fetch-dest': 'empty',
    'sec-fetch-mode': 'cors',
    'sec-fetch-site': 'same-site',
    'UCR-UI-Version': '20.5.4',
    'Origin': 'https://ucr.gov',
    'Connection': 'keep-alive',
}

s = requests.Session()

params = (
    ('pageNumber', '0'),
    ('itemsPerPage', '15'),
)

response = s.get(url, headers=headers, params=params)

response.json()

可以在此处找到预期内容: https://ucr.gov/enforcement/1000511

相反,我收到此错误:

json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

同样,这在几周前曾经有效。请帮我找出错误。

更正 1: - 我最初将网址发布为:

url = 'https://admin.ucr.gov/api/enforcement/{}'.format(query)

,这以前是有效的。现在,我看到该网站使用相同的网址,但没有“admin”(上面的代码已更改)。但如果您访问: https://ucr.gov/enforcement/1000511,我仍然没有得到预期的任何结果/内容


该网站不向 https://ucr.gov/api/enforcement/1000511 提供 JSON 数据。在浏览器中看到的 JSON 数据实际上是嵌入在网页源代码中的 JavaScript 变量中。

要抓取数据,需要执行以下操作:

  1. 获取网页源代码。
  2. 使用正则表达式或 HTML 解析器提取 JSON 数据。

以下是如何使用 Python 和 requests 以及 BeautifulSoup 库实现此目的的方法:

import requests
from bs4 import BeautifulSoup
import json

query = "1000511"
url = f'https://ucr.gov/enforcement/{query}'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
}

response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')

# 在网页源代码中找到包含 JSON 数据的脚本标签
script_tag = soup.find('script', {'id': '__NEXT_DATA__'})

# 提取 JSON 数据
json_data = json.loads(script_tag.text)

# 现在可以访问 JSON 数据
print(json_data)

此代码将:

  1. 使用 requests 库发送对所需页面的 GET 请求。
  2. 使用 BeautifulSoup 解析 HTML 内容。
  3. 找到包含 JSON 数据的特定脚本标签(在本例中为 id="__NEXT_DATA__" )。
  4. 使用 json.loads() 将 JSON 数据字符串转换为 Python 字典。

然后,就可以在 json_data 变量中访问提取的 JSON 数据,并根据需要对其进行处理。

标签:python,json,web-scraping
From: 62396112

相关文章

  • Python逆向
    参考链接:https://www.bilibili.com/video/BV1JL4y1p7Tt/?spm_id_from=333.999.0.0https://bbs.kanxue.com/thread-282542.htmhttps://blog.csdn.net/weixin_35967330/article/details/114390031?spm=1001.2014.3001.5501https://0xd13a.github.io/ctfs/0ctf2017/py/前言:py......
  • Python中使用正则表达式
    摘要:正则表达式,又称为规则表达式,它不是某种编程语言所特有的,而是计算机科学的一个概念,通常被用来检索和替换某些规则的文本。一.正则表达式的语法①行定位符行定位符就是用来描述字符串的边界。"^"表示行的开始,"$"表示行的结束。^tm  #tmequalTomorrowMoon可以......
  • 如何在python中使用xarray打开grib2文件?
    将xarray导入为xr导入cfgrib导入生态码将pandas导入为pddata=xr.open_dataset(r"C:\Users\new\forecast_data.grib2",engine="cfgrib")这是我的代码。我只想使用xarray读取这个文件。错误是:无法识别的引擎cfgrib必须是以下之一:['netcdf4'、'scipy'、'......
  • 如何在 java 或 python 中使用 HTTP(S) 解决无法解析的主机名或无法识别的名称错误?
    我尝试以编程方式访问网站的信息,但在Java和Python上都无法解析主机名。如果我指定IP地址,则会将错误更改为TLSV1_UNRECOGNIZED_NAME。不过,这个网站无需任何额外的工作就可以通过任何浏览器解决。我在这里浏览了很多潜在的解决方案,但对于Python,它说这个问题应该在2.7......
  • Python 请求 POST 请求与 websockets 库一起使用时挂起
    我使用Python中的requests库发送POST请求,同时维护与websockets库的WebSocket连接:importasyncioimportrequestsimportwebsocketsasyncdefwebsocket_handler(uri):asyncwithwebsockets.connect(uri)aswebsocket:whileTrue:me......
  • 在Python中,list1[::] = list2的空间复杂度是多少?
    此代码首先迭代列表nums,更新整数0、1、2(也分别称为红色、白色和蓝色)的计数。nums保证只有整数0、1和/或2。找到计数后,代码使用[::],这是一种就地修改列表的技巧,以排序numsdefsortColors(self,nums:List[int])->None:re......
  • [附开题]flask框架高校资产管理系统d8y3s(源码+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着高等教育事业的快速发展,高校资产规模日益庞大,种类繁多,管理难度显著增加。传统的资产管理方式往往依赖于手工记录和纸质档案,不仅效率低......
  • [附开题]flask框架贺州图特产管理系统uuy79(源码+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景贺州,这座历史悠久、文化底蕴深厚的城市,以其丰富的自然资源和独特的地理位置孕育了众多令人瞩目的特产。然而,在信息化快速发展的今天,贺州特......
  • [附开题]flask框架红枫超市会员管理系统ew5iq(源码+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着零售行业的快速发展与消费者需求的日益多样化,超市作为人们日常生活中不可或缺的一部分,其管理效率和服务质量直接影响着顾客的购物体验......
  • PYTHON专题-(4)python叫你搞对象
    什么是面向过程编程?面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。什么是面向对象编程?面向对象编程——ObjectOrientedProgramming,简......