大家好,我是Kuls。

前段时间帮一位老哥爬微博的一些数据,发现Github上有一个微博爬虫项目挺完善的。

微博上一些基本的信息都是可以爬取的,当然也有一些没有完善的地方。但是对于微博基本数据需求的朋友应该足够了。这个项目也是支持自己拓展开发的。

具体的使用方法readme中说的挺清楚,这里给大家简单的梳理一下怎么跑起来这个项目。

第一步

pip install -r requirements.txt

第二步

第一次执行:

python3 -m weibo_spider

它会自动产生config.json的配置文件,我们主要的配置信息都在那个文件里。

第三步

{"user_id_list": ["1866405545"],"filter": 0,"since_date": "2019-12-30","end_date": "now","random_wait_pages": [1, 3],"random_wait_seconds": [6, 15],"global_wait": [[100, 10], [500, 2000]],"write_mode": ["csv", "json"],"pic_download": 0,"video_download": 0,"file_download_timeout": [5, 5, 10],"result_dir_name": 0,"cookie": "D","mysql_config": {"host": "localhost","port": 3306,"user": "root","password": "123456","charset": "utf8mb4"},"kafka_config": {"bootstrap-server": "127.0.0.1:9092","weibo_topics": ["spider_weibo"],"user_topics": ["spider_weibo"]},"sqlite_config": "weibo.db"
}

这些参数的具体含义,大家还是自行去readme中阅读,项目地址我放在了文末。

第四步

python3 -m weibo_spider --config_path="config.json"

执行之后就可以跑起来了。

关于如何拓展该项目,爬到自己想要的数据:

整体的框架已经做得比较完善了。

其中,想拓展爬虫功能,可以在parser的包中进行修改。

其中page_parser.py中是爬虫的一些主要函数,建议大家可以从这个文件开始看起。

我在这个爬虫的基础上也添加了一个爬取热门评论以及热门评论点赞数的功能,大家可以看下我是如何去拓展的。

当然,如果它所爬取的信息已经满足你的需求,那么就没必要自己去加了,加了可能还会报错。

我们还是来看page_parser.py这个文件

def get_one_weibo(self, info):"""获取一条微博的全部信息"""try:weibo = Weibo()is_original = self.is_original(info)if (not self.filter) or is_original:weibo.id = info.xpath('@id')[0][2:]weibo.content = self.get_weibo_content(info,is_original)  # 微博内容weibo.article_url = self.get_article_url(info)  # 头条文章urlpicture_urls = self.get_picture_urls(info, is_original)weibo.original_p......# 省略

从他给的注解以及我们对这个函数进行分析,整体的步骤就是,自己编写一个函数,然后在这里进行调用即可。

通过我们对其他函数的分析,他们的函数参数中都有一个info参数,这个是什么呢?

从下面这个函数,我们可以知道info具体是什么:

def get_one_page(self, weibo_id_list):"""获取第page页的全部微博"""try:info = self.selector.xpath("//div[@class='c']")is_exist = info[0].xpath("div/span[@class='ctt']")weibos = [].......

其实info就是用户微博列表的页面。了解到info是什么,我们就可以对其进行xpath的解析

下面的代码是我对其功能进行的拓展,实际含义就是获取热门评论内容以及点赞数

def get_hot_comment_and_up_num(self,info):from lxml.html import  tostringfrom lxml import etreeid = info.xpath('@id')[0][2:]comment_url = 'https://weibo.cn/comment/'+idcomment = handle_html(self.cookie, str(comment_url))comment = tostring(comment).decode()html1 = etree.HTML(comment)# 获取所有a标签的href属性comment_hot_text = ''pattern = r'\d+'up_num = 0linklist = html1.xpath('//span[@class="kt"]/../@id')for i in linklist:l = html1.xpath('//div[@id="' + i + '"]//span[@class="ctt"]//text()')l2 = html1.xpath('//div[@id="' + i + '"]')for j in l2:text = handle_garbled(j)  # 处理乱码str_footer = text[text.rfind(u'赞'):]weibo_footer = re.findall(pattern, str_footer, re.M)up_num += int(weibo_footer[0])comment_hot_text = comment_hot_text.join(l)return comment_hot_text, up_num

然后,我们再去之前说的get_one_weibo函数中添加我们写好的函数

不过在此之前,我们还需要做一件事,就是将WeiBo对象的属性进行简单的修改,只需要添加你需要的字段名称就行。

例如我这里新增爬取热门评论以及点赞数,所以我只需要加上

self.hot_comment = ''
self.hot_comment_up_num = 0

项目地址:

https://github.com/dataabc/weiboSpider


一个高中就混迹互联网的小渣渣,目前还在大学摸鱼
如果想跟我交个朋友,可以加我微信:LLLLLLS123
我的博客:www.kuls6.top
本人接爬虫、web项目
欢迎加我微信交流学习
精彩文章,可以关注我!关注公众号回复“pdf”无套路领取本人原创的Django、flask全套教程
⬇️

Github上3.5k star 的微博爬虫,很赞!相关推荐

  1. GitHub 上有哪些好用的爬虫?

    GitHub 上有哪些好用的爬虫? 在开发实际项目的时候,你经常没有足够多的数据,需要自己去想办法获取,这个时候常常需要用到爬虫.然而找来找去,很可能找了很久都找不到既免费又好用的爬虫,今天就从好的爬 ...

  2. 2021年Python十佳ML库大盘点,国产选手GitHub半年获5k+star,第一名是升级版NumPy

    函擎 发自 凹非寺 量子位 报道 | 公众号 QbitAI 2021年里AI飞速发展,优秀算法层出不穷,令我们大开眼界. 而真正要将这些算法实现,一定少不了Python这个主流机器学习语言的加持. 今 ...

  3. 推荐:用动画的形式呈现解LeetCode题目的思路(github上25000多star)

    前些日子推荐了一个仓库,把常见算法用python语言实现了(见文章),近日在github上发现另外一个25000多star的仓库,用动画的形式呈现解LeetCode题目的思路,非常值得推荐. 仓库说明 ...

  4. 推荐:常见算法的python实现(github上25000多star)

    近日在github上发现一个25000多star的仓库,把各种常见算法用python实现了,而且还有动图演示,非常值得推荐. 仓库说明 这个仓库用python语言实现了绝大部分算法,主要是用于教学目的 ...

  5. [资源分享] Github上八千Star的深度学习500问教程

    本文大约 600 字,阅读大约需要 2 分钟 这周要分享的一个资源是来自 Github 上的已经有八千多 Star 的一个深度学习知识总结,如下图所示: 其 Github 地址为: https://g ...

  6. 【博客园2018总结帖】21天,在Github上获取 6300 star

    大家好,我是程序员小吴.12月初我在GitHub上上传了一个仓库,到现在为止获取了 6300 star,下面和大家聊聊关于项目启动的初衷.面临的一些困难和未来的计划. 「LeetcodeAnimati ...

  7. GitHub 上 1.3k Star 的 strman-java 项目有值得学习的地方吗?源码视觉来分析一波

    大家好,我是沉默王二. 很多初学编程的同学,经常给我吐槽,说:"二哥,你在敲代码的时候会不会有这样一种感觉,写着写着看不下去了,觉得自己写出来的代码就好像屎一样?" 这里我必须得说 ...

  8. 21天,在Github上获取 6300 star

    项目地址:https://github.com/MisterBooo/LeetCodeAnimation 大家好,我是程序员小吴.12月初我在GitHub上上传了一个仓库,到现在为止获取了 6300 ...

  9. 再见了,12306!春节回家第一抢票神器,GitHub上25万Star

    又要到新年了,想起了过年时,早上起来推开窗户外边已经是雪的世界,街上的冰糖葫芦,地瓜,还有从各地来的相聚的玩伴. 想到这里,小伙伴们是否也像小编一样对回家充满期待呢? 自从2010年官方推出12306 ...

  10. 牛X,试用了下 GitHub 上 2 万 Star 的第一抢票神器,3 秒钟抢到!

    点击上方"视学算法",选择"星标" 车栗子 发自 凹非寺 量子位 报道 | 公众号 QbitAI 春节抢票正在如火如荼的进行,过年回家那肯定需要抢票,每年的抢票 ...

最新文章

  1. 上拉加载下拉刷新了解下
  2. 总结java父类构造函数对子类构造函数的影响
  3. erp系统方案书_一次ERP选型实施失败的血泪教训!
  4. android touch事件坐标原点,Android onTouch事件与手势操作
  5. RabbitMQ学习之spring配置文件rabbit标签的使用
  6. 现代语音信号处理之线性预测分析
  7. smarty模版手册
  8. Python系列之:Dash从入门到精通系列一
  9. PPT使用技巧——绘制圆角曲线
  10. java web 留言板设计_JSP+Servlet+JavaBean传统方式实现简易留言板制作(注册、登录、留言)...
  11. 神经网络建模的基本思想,三维建模神经网络设计
  12. vue 日程表组件_VUE也有自己的日历组件
  13. ubuntu18.0.4 无线网卡无法上网解决!
  14. CSD-1371电力监控系统网络安全监测装置(Ⅱ 型)介绍
  15. health HEALTH_WARN;352 pgs degraded;352 pgs stuck unclean;352 pgs undersized;recovery 20/40 objects
  16. Verilog语言程序框架
  17. UIPATH设置定时任务
  18. 【基础算法】试除法求约数(Acwing869题)
  19. 黑苹果安装资源已过期 10.13,10.12
  20. 存储过程(SQL SERVER 2008)

热门文章

  1. 类风湿性关节炎中的肠-关节轴
  2. Swift中的下标(subscript)
  3. 计算机的语言栏怎么更改,语言栏不见了怎么调出来,笔者教你win7电脑语言栏不见了的解决方法...
  4. Chrome主页被强制修改为百度解决办法
  5. 18、Python第二节
  6. C++如何优雅地释放资源
  7. python求两个数的最大公约数穷举法_最大公约数GCD算法
  8. Android点9图的使用与制作工具推荐
  9. Unity中常用的游戏存档/读档技术
  10. ffmpeg学习笔记1-----udp流多路节目实现分离