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

文章目录

  • [1. 分析页面内容数据格式](#1. 分析页面内容数据格式)
  • [2. 使用re.findall方法,爬取新闻](#2. 使用re.findall方法,爬取新闻)
  • [3. 使用re.search 方法,爬取新闻](#3. 使用re.search 方法,爬取新闻)

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

  • 打开 https://36kr.com/

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

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

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

  • 在Name 列,找到 36kr.com 条目,右侧自动显示网页的相关内容:Headers, Preview, Response ... ...

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

2. 使用re.findall方法,爬取新闻

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

复制代码
import re
import requests
import json


# URL路径
url = "https://36kr.com/"
response = requests.get(url)
str1 = response.content.decode()

# 查找,使用正在表达式->取数组的第一个
result = re.findall("<script>window.initialState=(.*?)</script>", str1)[0]

# 先写入到本地,再查看
with open("36kr.json", "w", encoding="utf-8") as f:
    f.write(result)
    
# 加载json转换成python类型
json_result = json.loads(result)
print(json_result)


# pretty print the data: 其中 json.dumps() 对数据格式进行了美化:
print(json.dumps(json_result, indent=4))

print(f'data.theme        = {json_result["theme"]}')
print(f'data.isSpider     = {json_result["isSpider"]}')

for item in json_result["channel"]:
    print(f'name = {item["name"]}, '
          f'key = {item["key"]} ')

运行结果:


3. 使用re.search 方法,爬取新闻

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

复制代码
import re
import json
import requests


# URL路径
url = "https://36kr.com/"
html_doc = requests.get(url).text


data = re.search(r"<script>window.initialState=(.*?)</script>", html_doc)
print(f"data = {data}")

json_result = json.loads(data.group(1))
print(f"json_data = {json_result}")

# pretty print the data:
print(f"json_dump = {json.dumps(json_result, indent=4)}")

print(f'data.theme        = {json_result["theme"]}')
print(f'data.isSpider     = {json_result["isSpider"]}')

for item in json_result["channel"]:
    print(f'name = {item["name"]}, '
          f'key = {item["key"]} ')

运行结果:


相关推荐
landyjzlai7 小时前
蓝迪哥玩转Ai(8)---端侧AI:RK3588 端侧大语言模型(LLM)开发实战指南
人工智能·python
我叫黑大帅8 小时前
如何通过 Python 实现招聘平台自动投递
后端·python·面试
其实防守也摸鱼9 小时前
CTF密码学综合教学指南--第九章
开发语言·网络·python·安全·网络安全·密码学·ctf
砚底藏山河9 小时前
Python量化开发:2026最佳实时股票数据API接口推荐与对比
开发语言·windows·python
T畅N9 小时前
审批流设计器(前端)
前端·elementui·vue·html·流程图·js
研究点啥好呢10 小时前
专为求职者开发的“面馆”!!!摆脱面试焦虑!!!
python·面试·开源·reactjs·求职招聘·fastapi
DFT计算杂谈10 小时前
自动化脚本一键绘制三元化合物相图
java·运维·服务器·开发语言·前端·python·自动化
EW Frontier11 小时前
6G ISAC新范式:基于智能漏波天线的Wi‑Fi通感一体化系统设计与实测【附MATLAB+python代码】
开发语言·python·matlab·music·isac·doa·wi‑fi
姚青&11 小时前
测试技术体系
java·python
易标AI12 小时前
标书智能体(五)——如何让弱模型也能稳定输出复杂json
人工智能·python·提示词·智能体·招投标