本节总结一下各种文本内容爬取的方法,进行一下案例实战,附详细解析,包含:微博评论爬取;豆瓣电影信息爬取;飞卢网小说爬取;知乎问答爬取。
1. 微博评论爬取
import re # 导入正则表达式模块,用于提取文本中的中文字符
import requests # 导入requests模块,用于发起网络请求
import pandas as pd # 导入pandas模块,用于数据处理和保存到Excel文件
# 设置要爬取的微博评论页面的URL
url = 'https://m.weibo.cn/comments/hotflow?id=4784937075214225&mid=4784937075214225&max_id_type=0'
# 设置请求头,伪装成浏览器进行访问,避免被服务器识别为爬虫
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
# 发起GET请求,获取微博评论页面的数据
response = requests.get(url=url, headers=headers)
# 初始化一个空列表,用于存储爬取到的评论信息
lis = []
# 遍历响应数据中的评论列表
for index in response.json()['data']['data']:
# 使用正则表达式提取评论中的中文字符,并拼接成字符串
content = ''.join(re.findall('[\u4e00-\u9fa5]+', index['text']))
# 构造一个字典,存储爬取到的评论信息
dit = {
'用户': index['user']['screen_name'], # 用户名
'地区': index['source'].replace('来自', ''), # 地区,这里简单地将来源文本中的“来自”替换为空字符串
'评论': content, # 评论内容
'日期': index['created_at'] # 评论日期
}
# 将构造好的字典添加到列表中
lis.append(dit)
# 打印爬取到的评论信息(注:这行代码可以注释掉,仅用于调试)
print(dit)
# 将列表转换为pandas DataFrame,方便后续处理
pd_data = pd.DataFrame(lis)
# 将DataFrame保存到Excel文件中
pd_data.to_excel('微博评论.xlsx')