python爬虫实例评论_python爬取微博评论的实例讲解

本文详述了使用Python爬虫抓取微博评论的步骤,从获取评论用户的ID,找到HTML标签,设置提取评论的函数,再到利用正则表达式去除文本中的HTML标签,最终将数据保存到CSV文件。示例代码包含爬取多个页面的微博评论并存储到文本文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python爬虫是程序员们一定会掌握的知识,练习python爬虫时,很多人会选择爬取微博练手。python爬虫微博根据微博存在于不同媒介上,所爬取的难度有差异,无论是python新入手的小白,还是已经熟练掌握的程序员,可以拿来练手。本文介绍python爬取微博评论的代码实例。

一、爬虫微博

与QQ空间爬虫类似,可以爬取新浪微博用户的个人信息、微博信息、粉丝、关注和评论等。

爬虫抓取微博的速度可以达到 1300万/天 以上,具体要视网络情况。

难度程度排序:网页端>手机端>移动端。微博端就是最好爬的微博端。

二、python爬虫爬取微博评论

第一步:确定评论用户的id

# -*- coding:utf-8 -*-

import requests

import re

import time

import pandas as pd

urls = 'https://m.weibo.cn/api/comments/show?id=4073157046629802&page={}'

headers = {'Cookies':'Your cookies',

'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6)

AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'}

第二步:找到html标签

tags = re.compile('?\w+[^>]*>')

第三步:设置提取评论function

def get_comment(url):

j = requests.get(url, headers=headers).json()

comment_data = j['data']['data']

for data in comment_data:

try:

第四步:利用正则表达式去除文本中的html标签

comment = tags.sub('', data['text']) # 去掉html标签

reply = tags.sub('', data['reply_text'])

weibo_id = data['id']

reply_id = data['reply_id']

comments.append(comment)

comments.append(reply)

ids.append(weibo_id)

ids.app

### Python 实现微博评论爬虫代码示例 以下是基于 `requests` 和 `BeautifulSoup` 的简单微博评论爬虫代码实现。此代码旨在演示如何通过 Python 抓取微博评论数据[^1]。 #### 准备工作 为了运行以下代码,需安装必要的依赖库: ```bash pip install requests beautifulsoup4 lxml ``` #### 示例代码 以下是一个基本的微博评论爬虫代码: ```python import requests from bs4 import BeautifulSoup def fetch_weibo_comments(weibo_id, page=1): """ 获取指定微博ID下的评论数据 :param weibo_id: 微博ID (字符串形式) :param page: 要获取的页码,默认第一页 :return: 返回解析后的评论列表 """ headers = { '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' } url = f"https://m.weibo.cn/comments/hotflow?id={weibo_id}&page={page}" response = requests.get(url, headers=headers) if response.status_code != 200: raise Exception(f"请求失败,状态码 {response.status_code}") data = response.json() comments = [] if data['ok'] == 1 and 'data' in data: for comment_data in data['data']: user_name = comment_data['user']['screen_name'] text = comment_data['text'] created_at = comment_data['created_at'] # 去除HTML标签并提取纯文本 soup = BeautifulSoup(text, 'lxml') plain_text = soup.get_text() comments.append({ 'user_name': user_name, 'comment': plain_text, 'time': created_at }) return comments if __name__ == "__main__": weibo_id = "目标微博ID" try: comments = fetch_weibo_comments(weibo_id, page=1) for idx, comment in enumerate(comments[:10], start=1): # 打印前10条评论 print(f"{idx}. 用户名: {comment['user_name']} | 时间: {comment['time']} | 评论内容: {comment['comment']}") except Exception as e: print(e) ``` #### 注意事项 - 上述代码适用于移动端接口 (`https://m.weibo.cn`) 并返回 JSON 数据结构[^2]。 - 需要替换变量 `weibo_id` 为目标微博的实际 ID。 - 如果频繁调用 API 可能触发反爬机制,建议加入延时处理或使用代理池来降低风险。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值