本篇文章,我们将探究GET请求的实际应用,我们使用Python的requests库通过GET请求抓取微博网页版(https://weibo.com/)的用户发布内容,因为微博整体使用的也是GET请求形式。
随着城市化进程的加速,公共交通系统在人们的日常生活中扮演着越来越重要的角色。地铁作为大中型城市的主要交通工具之一,其运营效率和服务质量直接影响市民的出行体验和城市的整体运行效能。同时上海作为经济中心,拥有较为发达的城市轨道交通网络。为了更好地理解上海地铁系统的运作情况及其对城市发展的影响,我们从微博平台上获取上海地铁官方发布的每日客流信息,并对其进行解析、清洗和可视化处理。
我们先来看看个人微博主页链接有哪些参数,uid(唯一id),page(页码),feaure(特征);
https://weibo.com/ajax/statuses/mymblog?uid=1742987497&page=1&feature=0
先讲一下通用方法,就是通过直接检索用户的个人微博主页,我们就可以知道该用户的唯一uid,通过修改uid和page就可以检索该用户的所有微博文章;
完整代码#运行环境 Python 3.11
import requests
import pandas as pd
import json # 导入json模块
# 存储获取的微博数据
content_list = []
# 设置请求的页数
max_pages = 10 # 只打印前10页
# 爬取微博数据
for page in range(1, max_pages + 1):
headers = {
"Cookie": "YOUR_COOKIE_HERE", # 替换为您的Cookie
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}
params = {
"uid": "1742987497", # 微博的用户ID
"page": page,
"feature": 0,
}
url = "https://weibo.com/ajax/statuses/mymblog"
# 发送请求
response = requests.get(url=url, headers=headers, params=params)
if response.status_code == 200: # 检查请求是否成功
print(f"第 {page} 页,状态码: {response.status_code}")
data = json.loads(response.text) # 解析JSON响应
# 提取微博数据
for item in data['data']['list']:
created_at = item['created_at']
text = item['text_raw']
# 打印每条微博的创建时间和文本内容
print(f"创建时间: {created_at}, 文本内容: {text}")
else:
print(f"请求失败,状态码: {response.status_code}")
break
这里就打印了该用户的在限定条件范围内所有微博文章,有需要的话可以另存为csv之类的;
通常我们并不需要用户的所有文章内容,我们可以通过检索特定标签的方式打特定内容并保存为csv,这里以上海地铁官方微博,"上海地铁shmetro" 为例,我们需要获取它的客运量信息, 我们先看它发布客流量时候带的特定标签是什么,通过检索发现是"【地铁网络客流】",所以通过增加限定词的的方式来筛选输出内容;
完整代码#运行环境 Python 3.11
import requests
import pandas as pd
import json # 导入json模块
import time # 导入时间模块
import random # 导入随机模块
# 存储获取的微博数据
content_list = []
# 设置请求的页数
max_pages = 10 # 只打印前10页
# 爬取微博数据
for page in range(1, max_pages + 1):
headers = {
"Cookie": "YOUR_COOKIE_HERE", # 替换为您的Cookie
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}
params = {
"uid": "1742987497", # 地铁微博的用户ID
"page": page,
"feature": 0,
}
url = "https://weibo.com/ajax/statuses/mymblog"
# 发送请求
response = requests.get(url=url, headers=headers, params=params)
if response.status_code == 200: # 检查请求是否成功
print(f"第 {page} 页,状态码: {response.status_code}")
data = json.loads(response.text) # 解析JSON响应
# 提取微博数据
for item in data['data']['list']:
created_at = item['created_at'] # 获取创建时间
text = item['text_raw'] # 获取文本内容
# 检查是否包含【地铁网络客流】标签
if '【地铁网络客流】' in text:
content_list.append({'created_at': created_at, 'text': text}) # 保存符合条件的数据
# 打印每条微博的创建时间和文本内容
print(f"创建时间: {created_at}, 文本内容: {text}")
# 随机延时,延迟时间在1到3秒之间
delay = random.uniform(1, 3)
print(f"等待 {delay:.2f} 秒...")
time.sleep(delay) # 随机延时
else:
print(f"请求失败,状态码: {response.status_code}")
break
# 将符合条件的数据保存为CSV文件
df = pd.DataFrame(content_list)
df.to_csv('yesterday_traffic.csv', index=False, encoding='utf-8-sig') # 保存为CSV文件
特定标签下的文章内容会被筛选出来,并另存为csv,另外python脚本里增加了随机延时部分,避免频繁访问;
我们一起来回顾一下2024年客流变化比较明显的几个特征时段,为此,我们获取了上海2024年一整年的客运量数据,2月10日至17日是春节假期,由于大量人口返乡过年,春节期间的客流出行显著下降,9月16日受今年第13号台风“贝碧嘉”影响,大部分地面段地铁停运,对当日的公共交通运营造成了较大影响,10月1日至7日迎来国庆节,尽管是旅游高峰期,但国庆期间的客流相对平时有所减少,说明部分平时以地铁作为主要通勤工具的人口选择了外出旅行或返乡;
文章仅用于分享个人学习成果与个人存档之用,分享知识,如有侵权,请联系作者进行删除。所有信息均基于作者的个人理解和经验,不代表任何官方立场或权威解读。
标签:GET,text,created,page,微博,HTML,import,response From: https://blog.csdn.net/weixin_45812624/article/details/145156230