python爬虫 - 爬取html中的script数据(zum.com新闻信息 )

文章目录

  • 1. 分析页面内容数据格式
  • 2. 使用re.findall方法,编写爬虫代码
  • 3. 使用re.search 方法,编写爬虫代码

1. 分析页面内容数据格式

(1)打开 https://zum.com/

(2)按F12(或 在网页上右键 --> 检查(Inspect))

(3)找到网页上的Network(网络)部分

(4)鼠标点击网页页面,按 Ctrl + R 刷新网页页面,可以看到 NetWork(网络)部分会刷新出很多的网络信息

(5)在Name 列,找到 zum.com 条目,右侧自动显示网页的相关内容:Headers, Preview, Response … …

(6)分析Response内容,所需要关心的内容,位于整个html页面的下面

在这里插入图片描述
在这里插入图片描述

2. 使用re.findall方法,编写爬虫代码

要点:从window.INITIAL_STATE=到;之间的数据都是json数据。 json.loads会自动将false转为False, true转为True


import re
import requests
import jsonurl = "https://zum.com/"
response = requests.get(url)
str1 = response.content.decode()result = re.findall(r"window\.__INITIAL_STATE__=(.*?}});", str1)  json_result = json.loads(result[0])
print(f"json_result = [{json_result}]")print(f'data.fetchedCommonResponse  = {json_result["fetchedCommonResponse"]}')
print(f'data.isDarkTheme                       = {json_result["isDarkTheme"]}')for item in json_result["headerStore"]["gnb"]["gnbItems"]:print(f'idx = {item["idx"]}, 'f'title = {item["title"]} ')

运行结果:

在这里插入图片描述在这里插入图片描述

使用工具格式化后数据内容:

在这里插入图片描述

3. 使用re.search 方法,编写爬虫代码

要点:从window.INITIAL_STATE=到;之间的数据都是json数据。 json.loads会自动将false转为False, true转为True


import re
import json
import requestsurl = "https://zum.com/"
html_doc = requests.get(url).textdata = re.search(r"window\.__INITIAL_STATE__=(.*?}});", html_doc)
print(f"data = {data}")data = json.loads(data.group(1))
print(data)# pretty print the data:
print(json.dumps(data, indent=4))print(f'data.fetchedCommonResponse        = {data["fetchedCommonResponse"]}')
print(f'data.isDarkTheme                  = {data["isDarkTheme"]}')for item in data["headerStore"]["gnb"]["gnbItems"]:print(f'idx = {item["idx"]}, 'f'title = {item["title"]} ')

运行结果如下,其中 json.dumps() 对数据格式进行了美化:

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/643389.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nacos原理简单介绍

注册中心原理 官网:Nacos 注册中心的设计原理 | Nacos nacos注册中心采用了 :pull (客户端的轮询)和push (服务端主动push)策略 客户端启动时会将当前服务的信息包含ip、端口号、服务名、集群名等信息封装…

面试题6 -- 腐烂的苹果(多源DFS)

腐烂的苹果(多源DFS) 文章目录 腐烂的苹果(多源DFS)解题思路代码拟写及相关注意点总结 题目链接: 腐烂的苹果_多源DFS 描述 给定一个 nm 的网格,其中每个单元格中可能有三种值中的一个 0 , 1 , 2。 其中 0…

Pycharm远程连接实验室服务器Conda环境配置

如何配置Pycharm和远程服务器 这类博客较多,参考内容 https://blog.csdn.net/fengbao24/article/details/125515542 Python解释器选择(conda3) 1. Settings -> Add Interpreter -> On SSH 注意,这里的SSH需要在你把远程…

C++感受9-Hello Object 生死版•上

你好对象! 认识C中基础中的基础类型;创建用户自定义的复合类型;创建新类型的对象;定制新类型对象的生死过程 零、面向对象启蒙 之前我们一直在问候世界,从这节课开始,我们的问候对象就是“对象&#xff08…

图解《图搜索算法》及代码实现

关注我,持续分享逻辑思维&管理思维; 可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导; 有意找工作的同学,请参考博主的原创:《面试官心得--面试前应该如何准备》,《面试官心得--面试时如何进行自…

SpringBoot学习之Kafka发送消费消息入门实例(三十五)

使用Kafka之前需要先启动fKafka,如何下载安装启动kafka请先参考本篇文章的前两篇: 《SpringBoot学习之Kafka下载安装和启动【Windows版本】(三十四)》 《SpringBoot学习之Kafka下载安装和启动【Mac版本】(三十三)》 一、POM依赖 1、加入kafka依赖 2、我的整个POM代码…

再谈C语言——理解指针(二)

指针变量类型的意义 指针变量的⼤⼩和类型⽆关,只要是指针变量,在同⼀个平台下,⼤⼩都是⼀样的,为什么还要有各种各样的指针类型呢? 其实指针类型是有特殊意义的,我们接下来继续学习。 指针的解引⽤ 对⽐…

vscode中使用rust的跳转定义时,rust-analyzer报错“未找到定义”,如何解决?

本文是关于错误解决的一个记录,如果你在使用vscode编写rust程序的过程中也遇到同样的错误,不妨一试。 我遇到的错误是,在编写的rust程序中想要跳转到当前变量或者函数的定义处,但按下F12无法跳转,且提示“未找到xxx定…

智能汽车:自动驾驶浅谈(入门)

1、 自动驾驶——数据驱动下的算法迭代 1.1、 自动驾驶算法是感知、预测、规划、控制的结合体 自动驾驶算法反应了工程师们根据人的思维模式,对自动驾驶所需处理过程的思考。通常包含感知、预测、规划模块,同时辅助一些地图、定位等模块,实…

【大模型系列】指令微调

概述 指令微调(Instruction Tuning)是指使用自然语言形式的数据对预训练后的大语言模型进行参数微调,22年谷歌ICLR论文中提出这个概念。在其它文献中,指令微调也被称为有监督微调(Supervised Fine-tuning)…

Python进阶编程 --- 3.闭包、装饰器、设计模式、多线程、网络编程、正则表达式、递归

文章目录 第三章:3.1 闭包3.2 装饰器语法糖写法 3.3 设计模式3.3.1 单例模式3.3.2 工厂模式 3.4 多线程3.4.1 进程、线程和并行执行3.4.2 多线程编程 3.5 网络编程3.5.1 Socket3.5.2 服务端开发3.5.3 客户端开发 3.6 正则表达式3.6.1 基础匹配3.6.2 元字符匹配单字符…

QT客户端开发的技术难点

QT是一种功能强大且灵活的跨平台应用程序开发框架,但也存在一些技术难点,需要开发者仔细考虑和克服。以下是一些常见的QT开发技术难点。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1. 跨平台兼容性 QT框架…