获取数据——爬取某微博评论

微博评论API

  • 想要爬取某一条微博的评论,首先会想到微博官方提供的API,但是不巧的是,官方提供的api能够获取的评论数量有限,不足以分析,那怎么办呢?
  • 我们想到了网页端,手机端的微博,希望直接爬取上面的数据。试了下网页端,可能网页做得很完善了吧,网页端找不到突破口,于是想到手机端碰碰运气。通过使用chrome的工具,发现:爬取最新评论的URL如下:url=‘https://m.weibo.cn/api/comments/show?id=‘+weibo_id+‘&page={}‘,如果希望爬取某条微博下的评论,将weibo_id替换为该微博id即可。

爬取数据

  • 如今找到了微博评论的API,后面的事情就轻车熟路了。上requests,发get请求,传入带有cookies的header即可。cookies就是自己微博登陆的cookies,可以使用chrome开发者工具获得。如百度的cookies可以通过network标签页下,选择某一文档获得。

    直接上代码比较直观:

    i=0 # 评论的页数
    comment_num=1 # 爬取的评论总数量
    while True:
        try:
            req=requests.get(url=url.format(i),headers=headers)
            comment_page=req.json()[‘data‘]
            if req.status_code==200:

                print(‘读取%s页的评论:‘%i)
                for j in range(0,len(comment_page)):
                    print(‘第%s条评论‘%comment_num)
                    user=comment_page[j]
                    comment_id=user[‘user‘][‘id‘]#评论id
                    print(comment_id)
                    user_name=user[‘user‘][‘screen_name‘]#发表评论的用户名
                    print(user_name)
                    create_at=user[‘created_at‘]#发表时间
                    print(create_at)
                    # 去除评论中表情等的特殊字符
                    text=re.sub(‘<.*?>|回复<.*?>:|[\U00010000-\U0010ffff]|[\uD800-\uDBFF][\uDC00-\uDFFF]‘,‘‘,user[‘text‘])
                    print(text)
                    likenum=user[‘like_counts‘]#点赞数
                    print(likenum)
                    source=re.sub(‘[\U00010000-\U0010ffff]|[\uD800-\uDBFF][\uDC00-\uDFFF]‘,‘‘,user[‘source‘])#去除评论中表情等的特殊字符
                    print(source+‘\r\n‘)

                    comment_num+=1
                i+=1
                time.sleep(3)#防止反爬虫机制,停止一会~~~~
            else:
                break
        except:
            i+=1
            pass

现在我们已经获取到了微博的评论,我们就把他们用Mysql存储起来,以待后面的使用。我们使用pymysql这个包来操作Mysql,一个简单的操作代码如下:

class Sql(object):
        def __init__(self):
            pass

        def connect_sql(self):
    self.conn=pymysql.connect(host=‘127.0.0.1‘,user=‘root‘,password=‘1111‘,charset=‘utf8‘,use_unicode=False)
            self.cur=self.conn.cursor()

        def insert_data(self,comment_id,user_name,create_at,text,likenum,source):
            #数据库名为nlp,表名为luhan
            sql=‘insert into nlp.luhan(comment_id,user_name,created_at,text,likenum,source) values(%s,%s,%s,%s,%s,%s)‘
            param=(comment_id,user_name,create_at,text,likenum,source)
            try:
                self.cur.execute(sql,param)
                self.conn.commit()
            except Exception as e:
                print(e)
                self.conn.rollback()

这个类定义了一个insert_data函数,连接Mysql后,将上面的comment_id,user_name,create_at,text,likenum,source传入函数即可存入Mysql。

至此,就可以把某条微博的评论获取到本地了。

原文地址:https://www.cnblogs.com/mengnan/p/9307655.html

时间: 2024-10-08 11:16:16

获取数据——爬取某微博评论的相关文章

python制作爬虫爬取京东商品评论教程

作者:蓝鲸 类型:转载 本文是继前2篇Python爬虫系列文章的后续篇,给大家介绍的是如何使用Python爬取京东商品评论信息的方法,并根据数据绘制成各种统计图表,非常的细致,有需要的小伙伴可以参考下 本篇文章是python爬虫系列的第三篇,介绍如何抓取京东商城商品评论信息,并对这些评论信息进行分析和可视化.下面是要抓取的商品信息,一款女士文胸.这个商品共有红色,黑色和肤色三种颜色, 70B到90D共18个尺寸,以及超过700条的购买评论. 京东商品评论信息是由JS动态加载的,所以直接抓取商品详

Python爬虫入门教程 15-100 石家庄政民互动数据爬取

1. 石家庄政民互动数据爬取-写在前面 今天,咱抓取一个网站,这个网站呢,涉及的内容就是 网友留言和回复,特别简单,但是网站是gov的.网址为http://www.sjz.gov.cn/col/1490066682000/index.html 首先声明,为了学习,绝无恶意抓取信息,不管你信不信,数据我没有长期存储,预计存储到重装操作系统就删除. 2. 石家庄政民互动数据爬取-网页分析 点击更多回复 ,可以查看到相应的数据. 数据量很大14万条,,数据爬完,还可以用来学习数据分析,真是nice 经

数据挖掘工具分析北京房价 (一) 数据爬取采集

一. 前言 房价永远是最让人头疼且激动的话题,尤其是在帝都,多少人一辈子都为了一套房子打拼.正好我也想用一个大家比较关心的话题作为案例,把目前我开发的这套软件进行一次完整的演练.从数据采集,到清洗,分析,和最终可视化和报告的呈现,实现一次完整的流程.一方面可以给大家切实的分享一些有用的信息,再者可以更好地了解这套软件的使用流程.  关于本工具的介绍,可参考数据挖掘平台介绍(综述)——平台简介. 自然的,文章分为四部分,本节是第一部分:数据爬取和采集. 二.  准备工作 俗话说巧妇难为无米之炊,没

python实现数据爬取-清洗-持久化存储-数据平台可视化

基于python对淘宝模特个人信息进行筛选爬取,数据清洗,持久化写入mysql数据库.使用django对数据库中的数据信息筛选并生成可视化报表进行分析. 数据爬取,筛选,存库: # -*- coding:utf-8 -*-   import requests from bs4 import BeautifulSoup import sys import re reload(sys) sys.setdefaultencoding('utf-8') import MySQLdb import cha

Python爬虫 股票数据爬取

前一篇提到了与股票数据相关的可能几种数据情况,本篇接着上篇,介绍一下多个网页的数据爬取.目标抓取平安银行(000001)从1989年~2017年的全部财务数据. 数据源分析 地址分析 http://money.finance.sina.com.cn/corp/go.php/vFD_FinancialGuideLine/stockid/000001/ctrl/2017/displaytype/4.phtml 在浏览器(PC上)中打开这个地址,就可以看到下图显示的财务数据.这个地址是一个通用格式:(

爬虫1.5-ajax数据爬取

目录 爬虫-ajax数据爬取 1. ajax数据 2. selenium+chromedriver知识准备 3. selenium+chromedriver实战拉勾网爬虫代码 爬虫-ajax数据爬取 1. ajax数据 ajax (异步JavaScript 和 XML)(读作阿贾克斯),ajax可以时网页实现异步更新,一般使用的json数据交互,即在不重新加载整个页面也可以对网页的部分进行更新,ajax技术加载的数据在网页源代码中是看不到的,只能看到url加载的html部分 获取ajax数据的两

XPath之电影天堂数据爬取

2019.5.19,今天写这个实例写了几个小时,虽然不多,100行代码左右,但是貌似是学python以来代码写得最多的一次了. 主要是看了这个视频https://www.bilibili.com/video/av51650499?from=search&seid=10478614069026676839 然后自己尝试写了一下,大部分都能写出来,就是最后获取“主演”和“简介”的时候不太好获取,需要运用到下标并使用循环. 另外,还需要注意的是,我写的这个程序是以电影名称命名然后以json格式存储在本

基于CrawlSpider全栈数据爬取

CrawlSpider就是爬虫类Spider的一个子类 使用流程 创建一个基于CrawlSpider的一个爬虫文件 :scrapy genspider -t crawl spider_name www.xxx.com 构造链接提取器和规则解析器 链接提取器: 作用:可以根据指定的规则进行指定连接的提取 提取的规则: allow = "正则表达式" 会先在全局匹配所有的url,然后根据参数allow的规则匹配需要的链接 规则解析器 作用:获取链接提取器提取到的链接,对其进行请求发送,根据

Ajax数据爬取

Ajax数据爬取 简介 数据加载是异步加载,局部刷新.web开发的前后端分离通常都用Ajax交互,降低了服务器直接渲染页面带来的压力 基本原理 发送请求 解析内容 渲染网页 其实就是 向后端指定接口发送请求,返回数据,渲染页面 JS对Ajax底层的实现,实际上是新建了一个XMLHttpRequest对象 Ajax分析方法 发送的请求类型为 XHR :Request Headers 中就有一条信息为 X-Request-With:XMLHttpRequest ,这就标记了该请求为Ajax请求:返回