精华内容
下载资源
问答
  • 本科毕业设计的时候做实验数据集的需要,自己写了一个微博转发的采集器,今晚心血来潮,整理了一下原来的代码,重新写了一个热门微博评论的的采集爬虫、效果不错。 ps:有一个想法就是采集热门微博评论,然后在...

      本科毕业设计的时候做实验数据集的需要,自己写了一个微博转发的采集器,今晚心血来潮,整理了一下原来的代码,重新写了一个热门微博评论的的采集爬虫、效果不错。

        ps:有一个想法就是采集热门微博的评论,然后在自己的账号上自动用脚本发布采集下来的热门评论、这是很有趣的一件事。

        2016年12月21日10:44:53更新:用了两个测试账号跑了三周的时间,自动发布了两万条热门微博!

    转载于:https://www.cnblogs.com/zeze/p/6105840.html

    展开全文
  • 2020 年最新微博内容及评论爬虫

    万次阅读 多人点赞 2020-03-13 12:40:23
    今天手把手教大家如何写成一份微博爬虫的代码,可以自己爬取微博的热门话题或评论,方便做相关的数据分析和可视化。 该项目的 Github 地址是 https://github.com/Python3Spiders/WeiboSuperSpider ,请不要利用该...

    微博爬虫综述

    今天手把手教大家如何写成一份微博爬虫的代码,可以自己爬取微博的热门话题或评论,方便做相关的数据分析和可视化。

    该项目的 Github 地址是 https://github.com/Python3Spiders/WeiboSuperSpider
    ,请不要利用该爬虫项目获得的数据作任何违法用途。

    微博爬虫主要有两个导向,一个是微博内容的爬虫,其目的字段包括微博文本、发布者、转发/评论/点赞数等,另一个是微博评论的爬虫,其目的字段主要是评论文本和评论者。

    微博的爬虫的目的网站主要有四个,pc 站weibo.comweibo.cn 以及对应的 m(mobile) 站 m.weibo.com(无法在电脑上浏览)、m.weibo.cn,总得来说,.cn.com 更简单 UI 更丑,m 站比 pc 站更简单 UI 更丑。

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    Github 仓库详解

    仓库的目录如下图所示,主要是分两部分 GUI 功能集中版无 GUI 功能独立版,GUI 即 Graph User Interface(图形用户接口)。

    在这里插入图片描述

    GUI 功能集中版

    最开始只有 GUI 功能集中版 这一部分,主代码是 GUI.py 和 WeiboCommentScrapy.py。

    在这里插入图片描述

    GUI.py 包括爬虫逻辑和 GUI 界面,是基于 PyQt5 构建的,爬虫部分由三个类 WeiboSearchScrapy、WeiboUserScrapy、WeiboTopicScrapy,他们的目标站点都是 weibo.cn,都继承自线程类 Thread。

    在这里插入图片描述

    GUI.Py 里面实现的是用户/话题爬虫,即爬取指定用户/话题下的微博,当我们在界面点击提交了一个抓取任务,就会开启对应的线程类爬虫,抓取完毕通过该类和主界面之间的信号提示抓取完成。
    在这里插入图片描述

    GUI.py 运行效果图如下:

    在这里插入图片描述
    在这里插入图片描述
    无论是微博用户,还是话题爬虫,都有 50 页左右的限制。

    爬取了微博之后,我们可以使用 WeiboCommentScrapy.py 爬取指定微博的评论,怎么指定,参考下图

    在这里插入图片描述

    注意 weibo.cn 站微博的 id 是类似 IjEDU1q3w 这种格式,和后面的 m.weibo.cn 的微博 id 格式不同(它的纯数字,比较长),该评论爬虫只能爬取前 100 页的。

    微博用户/话题/评论 爬虫的数据依次保存在 user/topic/comment 文件夹下的 csv 文件中。

    20200313 实测 GUI 功能集中版的代码仍可用,exe 失效了,因为代码每更新一次就要打包、发布一次 exe,比较麻烦,我就没更新 exe 了( exe 是第一版代码打包了,现在第三版了)

    注意 GUI 功能集中版均是针对 weibo.cn 的,也就是界面最丑的那个站,不要把 weibo.com 或者 m.weibo.cn 的 cookie 放到这来,否则会出现以下错误:

    encoding error : input conversion failed due to input error, bytes 0xC3 0x87 0xC3 0x82
    encoding error : input conversion failed due to input error, bytes 0xC3 0x87 0xC3 0x82
    encoding error : input conversion failed due to input error, bytes 0xC3 0x87 0xC3 0x82
    I/O error : encoder error
    encoding error : input conversion failed due to input error, bytes 0xC3 0x87 0xC3 0x82
    encoding error : input conversion failed due to input error, bytes 0xC3 0x87 0xC3 0x82
    encoding error : input conversion failed due to input error, bytes 0xC3 0x87 0xC3 0x82
    I/O error : encoder error
    

    同时,如果出现了诸如PermissionError: [Errno 13] Permission denied: 'comment/IaYZIu0Ko.csv 之类的错误,则是因为你在 excel 中打开了 这个 csv 文件,同时程序还在继续向这个文件追加写,获取不到锁因而报错,如果想一边跑一边查看文件内容,可以用 Pycharm 的 CSV Plugin 插件。

    无 GUI 功能独立版

    在这里插入图片描述

    该文件下有三个文件 WeiboCommentScrapy.py、WeiboTopicScrapy.py、WeiboSuperCommentScrapy.py,前面两个都还是针对 weibo.cn 的,WeiboTopicScrapy.py 作了相应的升级,可以支持时间跨度搜索,比如之前假如这个话题有 1000 页吗,我们最多只能爬取 130 页,但是可能把这 1000 页按照时间段拆分,每个时间段(Year-Month-Day,不支持小时及以下时间颗粒度)无论长短,都最多能获取 130 页。

    而 WeiboSuperCommentScrapy.py 则是针对 m.weibo.cn 的,这个评论爬虫没有 100 页的限制,我一条微博拿到了几w+的评论,但是有的只能拿到几k(实际评论几w+),这点很迷。该文件运行可以不自己设置 cookie,可以通过账号登录自动获取 cookie,这一步是学习的一位简书博主的文章(https://www.jianshu.com/p/8dc04794e35f)不过经过调试我发现其中有个参数 max_id_type 会在 17 页+1,同时做了对评论的回复的解析保存。

    解析的代码如下,直接提取 json :

    def info_parser(data):
    	id,time,text =  data['id'],data['created_at'],data['text']
    	user = data['user']
    	uid,username,following,followed,gender = \
    		user['id'],user['screen_name'],user['follow_count'],user['followers_count'],user['gender']
    	return {
    		'wid':id,
    		'time':time,
    		'text':text,
    		'uid':uid,
    		'username':username,
    		'following':following,
    		'followed':followed,
    		'gender':gender
    	}
    

    抓取的代码如下:

    def start_crawl(cookie_dict,id):
    	base_url = 'https://m.weibo.cn/comments/hotflow?id={}&mid={}&max_id_type=0'
    	next_url = 'https://m.weibo.cn/comments/hotflow?id={}&mid={}&max_id={}&max_id_type={}'
    	page = 1
    	id_type = 0
    	comment_count = 0
    	requests_count = 1
    	res = requests.get(url=base_url.format(id,id), headers=headers,cookies=cookie_dict)
    	while True:
    		print('parse page {}'.format(page))
    		page += 1
    		try:
    			data = res.json()['data']
    			wdata = []
    			max_id = data['max_id']
    			for c in data['data']:
    				comment_count += 1
    				row = info_parser(c)
    				wdata.append(info_parser(c))
    				if c.get('comments', None):
    					temp = []
    					for cc in c.get('comments'):
    						temp.append(info_parser(cc))
    						wdata.append(info_parser(cc))
    						comment_count += 1
    					row['comments'] = temp
    				print(row)
    			with open('{}/{}.csv'.format(comment_path, id), mode='a+', encoding='utf-8-sig', newline='') as f:
    				writer = csv.writer(f)
    				for d in wdata:
    					writer.writerow([d['wid'],d['time'],d['text'],d['uid'],d['username'],d['following'],d['followed'],d['gender']])
    
    			time.sleep(5)
    		except:
    			print(res.text)
    			id_type += 1
    			print('评论总数: {}'.format(comment_count))
    
    		res = requests.get(url=next_url.format(id, id, max_id,id_type), headers=headers,cookies=cookie_dict)
    		requests_count += 1
    		if requests_count%50==0:
    			print(id_type)
    		print(res.status_code)
    

    反爬措施主要是设置 User-Agent 和 Cookie,欢迎大家尝试,有问题请留言。

    展开全文
  • 用python爬取微博评论数据,爬虫之路,永无止境。。(附源码) 今天目标爬取微博任意博文的评论信息 工具使用 开发环境:win10、python3.6 开发工具:pycharm 工具包 :requests,re, time, random,tkinter 项目...

    用python爬取微博评论数据,爬虫之路,永无止境。。(附源码)

    今天目标爬取微博任意博文的评论信息

    工具使用

    开发环境:win10、python3.6
    开发工具:pycharm
    工具包 :requests,re, time, random,tkinter

    项目思路分析

    1.网页版登录拿回cookie值
    2.选取要爬的博文评论信息的网页版网址
    https://weibo.com/3167104922/Kkl7ar83T#comment为例
    3.根据网页版的地址抓包拿回博文唯一的id值(weibo_id)
    4.构造博文手机版评论请求的地址
    f’https://m.weibo.cn/comments/hotflow?id={weibo_id}&mid={weibo_id}&max_id_type=0’
    5.发送请求拿回响应的json数据
    6.max_id和max_id_type的值确定
    7.构造data参数,下次翻页请求要加上参数

    """构造GET请求参数"""
            data = 
    展开全文
  • 微博用户爬虫

    2018-08-15 18:13:06
    微博爬虫微博爬虫微博爬虫微博爬虫微博爬虫微博爬虫微博爬虫微博爬虫微博爬虫微博爬虫微博爬虫
  • Python-微博终结者爬虫

    2019-08-10 07:28:02
    这个项目致力于对抗微博的反爬虫机制,集合众人的力量把微博成千上万的微博评论语料爬取下来并制作成一个开源的高质量中文对话语料,推动中文对话系统的研发。
  • 新浪微博用户网络爬虫.rar
  • 我就来做了一下微博评论爬虫,看看大家对这件事情的看法。 微博移动端相对好爬一些,且评论数据差不多,所以我们主要是针对微博移动端进行信息采集。 我们打开网址看到如下信息 评论量还是挺多的,所以我们要先...

    Python微博奔驰事件爬虫

    工具:Pycharm,Win10,Python3.6.4

    最近奔驰漏油事件成为大家讨论的热点,也频上热搜。我就来做了一下微博评论爬虫,看看大家对这件事情的看法。

    微博移动端相对好爬一些,且评论数据差不多,所以我们主要是针对微博移动端进行信息采集。

    我们打开网址看到如下信息

    评论量还是挺多的,所以我们要先获取该微博的链接,然后通过该微博去获取评论页。可以看到微博是动态加载的,你不断往下翻就会有新的微博内容出现,此时我们应该考虑是动态加载

    可以看到每次会产生10条微博数据,我们要获取这10条数据中的idstr去构造每条微博的详情链接。

    找到了我们要的idstr之后我们观察微博详情链接的网页规则发现https://m.weibo.cn/detail/+idstr,详情页有着这样的规则,那么对我们来说很容易构造。有了详情页链接我们就要获取详情页中的微博内容和评论数据。通过分析发现微博内容实在详情页的源码中,这个很好获取。但是微博内容常常带着超链接,这影响数据的实用性,我们需要用一个正则去匹配中文内容。评论内容同样是动态加载,注意,我这边只考虑一级评论。

    在获取评论的时候有个注意点,评论不像我们之前我们所接触的翻页,直接page加一就能获取下一页的评论内容,他是在上一页的评论中有一个id,然后通过这个id去构造下一页的评论页,如此往复。

    下面贴出代码

    import requests
    import json
    import re
    import csv
    import time
    
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
        'cookie':'换上自己的cookie',
    }
    
    
    def get_html(url):
        response = requests.get(url, headers=headers)
        response.encoding = response.apparent_encoding
        html = response.text
        return html
    
    
    def parse_index_html(html):
        html = json.loads(html)
        idstr = []
        for i in html['data']['cards'][0]['card_group']:
            idstr.append(i['mblog']['idstr'])
        return idstr
    
    
    def parse_detail_html(html):
        text_pattern = re.compile('"text":(.*?)"textLength"', re.S)
        text = re.findall(text_pattern, html)
        text_process_pattern = re.compile('[\u4e00-\u9fa5|,、“”‘’:!~@#¥【】*()——+。;?]+', re.S)
        text_process = re.findall(text_process_pattern, text[0])
        text = ''.join(text_process)
        return str('内容') + text
    
    def parse_comment_html(html):
        html = json.loads(html)
        comments = []
        max_id = html['data']['max_id']
        # print(max_id)
        for i in html['data']['data']:
            text_process_pattern = re.compile('[\u4e00-\u9fa5|,、“”‘’:!~@#¥【】*()——+。;?]+', re.S)
            text_process = re.findall(text_process_pattern, i['text'])
            text = ''.join(text_process)
            write2csv(text)
            # comments.append(text)
        return max_id
    
    def write2csv(content):
        with open('info1.csv','a',encoding='utf-8-sig',newline='') as f:
            writer = csv.writer(f)
            writer.writerow([content])
    if __name__ == '__main__':
        max_id = '0'
        for page in range(2,10):
            print('第几页 '+str(page))
            url = 'https://m.weibo.cn/api/container/getIndex?containerid=100103type%3D60%26q%3D%23%E5%A5%94%E9%A9%B0%E5%A5%B3%E8%BD%A6%E4%B8%BB%E5%93%AD%E8%AF%89%E7%BB%B4%E6%9D%83%23%26t%3D0&page_type=searchall&page='+str(page)
            index_html = get_html(url)
            idstr = parse_index_html(index_html)
            for id in idstr:
                print('内容ID '+str(id))
                detail_text_url = 'https://m.weibo.cn/detail/' + str(id)
                detail_html = get_html(detail_text_url)
                text = parse_detail_html(detail_html)
                write2csv(text)
                for i in range(5):
                    try:
                        time.sleep(3)
                        print('评论页码 '+str(i))
                        # 'https://m.weibo.cn/comments/hotflow?id=4362541104634930&mid=4362541104634930&max_id_type=0'
                        comment_url = 'https://m.weibo.cn/comments/hotflow?id=' + str(id) + '&mid=' + str(id) + '&max_id=' + str(
                            max_id) + '&max_id_type=0'
                        print(comment_url)
                        comment_html = get_html(comment_url)
                        # print(comment_html)
                        max_id = parse_comment_html(comment_html)
                        print('max_id '+str(max_id))
                        if str(max_id) == '0':
                            break
                    except:
                        continue

     

    展开全文
  • 承诺今天发布的 2021 新版微博评论爬虫如约而至,和上一篇 2021 新版微博话题爬虫发布 一样,也是付费内容。 上一篇付费内容有读者留言说,不知道买的是什么,值不值,所以在进入付费内容前,点明本文的主要内容。...
  • 使用selium、beautifulsoup、lxml库对微博的一个爬虫,解放双手,适合大数据分析。 未采用多线程,对服务器不造成太大压力。
  • 微博爬虫 在微博搜索夫子庙关键词,然后得到网页链接,我们用审查元素分析,应该是ajax模式,于是得到它的请求头,分析它的参数,应该就是只有一个page变量.其请求头网页. 接下来我们就可以爬取在夫子庙这个地点发...
  • 微博官微爬虫

    2018-10-26 14:45:15
    最近需要爬取某地区的官方微博,针对它的评论做情感分析。但是发现一个问题,该微博账号(以下简称A)有80多万粉丝,但是日常评论只有10-30条,而且不管A发布什么,下面大部分都是溢美之言,还有重复的一字不差的...
  • 微博用户信息爬虫

    2014-06-09 14:57:37
    基于爬萌程序作了略微修改的python程序,切断了程序与爬萌的交互,不需要从爬萌下载任务文件即可爬取任意目标的个人信息
  • 这里写自定义目录标题微博红包/爬虫/支付/核心代码 微博红包/爬虫/支付/核心代码 https://github.com/tangchen2018/wb_payhb_python.git concat : QQ:9336578
  • 最近想把名人微博评论抓取下来,用chorme解析数据,每条微博的标识是在返回xhr信息中的cards信息中的itemid参数,然后打开微博后都是一个16位的数字,例如:413095339767****,求解这个16位的数字是什么?...
  • 关键词搜索“某浪”微博用户的爬虫设计 ----------简介+模拟登录 1 简介 任务背景:17年暑假,接了老师的一个任务,调查宗教在网络上的影响程度,我负责了微博上宗教用户信息的调查。于是,就设计了微博关...
  • 新浪微博热搜爬虫 第一步:进入新浪热搜完整榜单页面,记录页面网址。 第二步:按F12,打开开发者工具。(使用Chorme浏览器) 第三步:点击开发者工具左上角图标,然后点选热搜榜中的文字,就可以找出热搜榜中的每...
  • 分享下工作中曾经的爬虫小项目,现不保证完全可用,仅做参考。 爬虫合集github地址:https://github.com/xiaoxiong74/Spiders 主要是基于scrapy或scrapy-redis框架进行数据爬虫 大体框架: 爬虫数据的应用: ...
  • Python实现半自动发微博【用COOKIES代替模拟登录;用WAP版微博代替网页版微博;每次还要改post数据的URL。。。半半自动的感觉】微博的内容是从糗事百科抓取的最热段子以及某网站的每日晚安。#!/usr/bin/python#...
  • weibo-comments-word-cloud Generates a Chinese word-cloud with the comments data crawled from WeiBo....一个抓取微博评论爬虫。 Data Cleaning. 数据清洗。 Generates word cloud. 生成词云。
  • 大一的时候也是为了帮朋友写爬虫才学的python,当时对网页什么的完全不了解,居然拿着正则表达式写出来一个,当然bug很多,很复杂,很费时。最近又有个朋友来拜托我帮他写爬虫,没办法又重新学了一波,还好现在知识...
  • 评论 用于个人博客的评论系统
  • Python爬取新浪微博热榜,必会爬虫项目之一,为了每天的谈资,学点爬虫技术吧
  • 微博热履带 微博热榜爬虫,利用Github Action的调度脚本更新BY PHP 微博今日热榜更新于2021-03-03 17:36:19

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,450
精华内容 5,380
关键字:

微博所有评论爬虫

爬虫 订阅