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

文章目录

  • [1. 分析页面内容数据格式](#1. 分析页面内容数据格式)
  • [2. 使用re.findall方法,编写爬虫代码](#2. 使用re.findall方法,编写爬虫代码)
  • [3. 使用re.search 方法,编写爬虫代码](#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 json


url = "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 requests

url = "https://zum.com/"
html_doc = requests.get(url).text

data = 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() 对数据格式进行了美化:


相关推荐
紫雾凌寒37 分钟前
计算机视觉 |解锁视频理解三剑客——TimeSformer
python·深度学习·神经网络·计算机视觉·transformer·timesformer
Good Note1 小时前
Golang——常用库context和runtime
开发语言·爬虫·golang
程序员杰哥1 小时前
测试用例详解
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
go54631584657 小时前
本地部署 GitHub 上的 Python 人脸识别项目
开发语言·python·github
FreakStudio8 小时前
手把手教你用 MicroPython 玩转幻尔串口舵机,代码+教程全公开
python·嵌入式·大学生·面向对象·技术栈·电子diy·电子计算机
tekin8 小时前
基于 Python 开发在线多人游戏服务器案例解析
服务器·python·游戏·在线多人游戏服务器
让学习成为一种生活方式10 小时前
libGL.so.1: cannot open shared object file: No such file or directory-linux022
linux·开发语言·python
java1234_小锋10 小时前
一周学会Flask3 Python Web开发-Jinja2模板继承和include标签使用
python·flask·flask3
图书馆钉子户10 小时前
from flask_session import Session 为什么是Session(app)这么用?
python·flask·mybatis
一只蜗牛儿11 小时前
Sherpa-ONNX:说话人识别与语音识别自动开启(VAD)+ Python API 完整指南
人工智能·python·语音识别