【python爬虫-爬微博】爬取王思聪所有微博数据
1. 准备:
- 代理IP 。网上有很多免费代理ip,如西刺免费代理IP http://www.xicidaili.com/,自己可找一个可以使用的进行测试;
- 抓包分析 。通过抓包获取微博内容地址。当然web下的api地址可以通过浏览器获得。
以下是通过浏览器调试获得的接口:
个人信息接口:
微博列表接口:
2. 完整代码:
import urllib.request
import json
import timeid = '1826792401' # 定义要爬取的微博id。王思聪微博https://m.weibo.cn/u/1826792401
proxy_addr = "122.241.72.191:808" # 设置代理IP# 定义页面打开函数
def use_proxy(url,proxy_addr):req = urllib.request.Request(url)req.add_header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0")proxy = urllib.request.ProxyHandler({'http': proxy_addr})opener = urllib.request.build_opener(proxy, urllib.request.HTTPHandler)urllib.request.install_opener(opener)data = urllib.request.urlopen(req).read().decode('utf-8', 'ignore')return data# 获取微博主页的containerid,爬取微博内容时需要此id
def get_containerid(url):data = use_proxy(url, proxy_addr)content = json.loads(data).get('data')for data in content.get('tabsInfo').get('tabs'):if(data.get('tab_type') == 'weibo'):containerid = data.get('containerid')return containerid# 获取微博用户的基本信息,如:微博昵称、微博地址、微博头像、关注人数、粉丝数、性别、等级等
def get_userInfo(id):url = 'https://m.weibo.cn/api/container/getIndex?type=uid&value='+id # 个人信息接口data = use_proxy(url, proxy_addr)content = json.loads(data).get('data')profile_image_url = content.get('userInfo').get('profile_image_url')description = content.get('userInfo').get('description')profile_url = content.get('userInfo').get('profile_url')verified = content.get('userInfo').get('verified')guanzhu = content.get('userInfo').get('follow_count')name = content.get('userInfo').get('screen_name')fensi = content.get('userInfo').get('followers_count')gender = content.get('userInfo').get('gender')urank = content.get('userInfo').get('urank')print("微博昵称:"+name+"\n"+"微博主页地址:"+profile_url+"\n"+"微博头像地址:"+profile_image_url+"\n"+"是否认证:"+str(verified)+"\n"+"微博说明:"+description+"\n"+"关注人数:"+str(guanzhu)+"\n"+"粉丝数:"+str(fensi)+"\n"+"性别:"+gender+"\n"+"微博等级:"+str(urank)+"\n")pass# 获取微博内容信息,并保存到文本中,内容包括:每条微博的内容、微博详情页面地址、点赞数、评论数、转发数等
def get_weibo(id, file):i = 1while True:url = 'https://m.weibo.cn/api/container/getIndex?type=uid&value='+idweibo_url = 'https://m.weibo.cn/api/container/getIndex?type=uid&value='+id+'&containerid='+get_containerid(url)+'&page='+str(i)print(url)print(weibo_url)try:data = use_proxy(weibo_url, proxy_addr)content = json.loads(data).get('data')cards = content.get('cards')if(len(cards)>0):for j in range(len(cards)):print("第"+str(i)+"页,第"+str(j)+"条微博")card_type = cards[j].get('card_type')if(card_type == 9):mblog = cards[j].get('mblog')attitudes_count = mblog.get('attitudes_count')comments_count = mblog.get('comments_count')created_at = mblog.get('created_at')reposts_count = mblog.get('reposts_count')scheme = cards[j].get('scheme')text = mblog.get('text')with open(file, 'a', encoding='utf-8') as fh:fh.write("第"+str(i)+"页,第"+str(j)+"条微博"+"\n")fh.write("微博地址:"+str(scheme)+"\n"+"发布时间:"+str(created_at)+"\n"+"微博内容:"+text+"\n"+"点赞数:"+str(attitudes_count)+"\n"+"评论数:"+str(comments_count)+"\n"+"转发数:"+str(reposts_count)+"\n")passpasspassi += 1time.sleep(0.05)passelse:breakexcept Exception as e:print(e)passpasspassif __name__ == "__main__":print('开始---')file = id+".txt"get_userInfo(id)get_weibo(id, file)print('完成---')
pass
3. 原博主认为:
一般做爬虫爬取网站,首选的都是m站,其次是wap站,最后考虑PC站。当然,这不是绝对的,有的时候PC站的信息最全,而你又恰好需要全部的信息,那么PC站是你的首选。一般m站都以m开头后接域名, 所以本文开搞的网址就是 m.weibo.cn。
感谢原博主的伟大贡献,真实还原了微博api的思路和接口。
-
【python爬虫-爬微博】爬取王思聪所有微博数据相关推荐
- python怎么爬虎牙_使用python爬虫框架scrapy抓取虎牙主播数据
前言 本文利用python的scrapy框架对虎牙web端的主播.主播订阅数.主播当前观看人数等基本数据进行抓取,并将抓取到的数据以csv格数输出,以及存储到mongodb中 思路 观察虎牙网站后确认 ...
- python爬虫——使用selenium爬取微博数据(一)
python爬虫--使用selenium爬取微博数据(二) 写在前面 之前因为在组里做和nlp相关的项目,需要自己构建数据集,采用selenium爬取了几十万条微博数据,学习了很多,想在这里分享一下如 ...
- [Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(二) —— 编写一个基本的 Spider 爬取微博用户信息
上一篇:[Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(一) -- 新建爬虫项目 在上一篇我们新建了一个 sina_scrapy 的项目,这一节我们开始正式编写爬虫的代码. 选择目标 ...
- [Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(四) —— 应对反爬技术(选取 User-Agent、添加 IP代理池以及Cookies池 )
上一篇:[Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(三) -- 数据的持久化--使用MongoDB存储爬取的数据 最近项目有些忙,很多需求紧急上线,所以一直没能完善< 使用 ...
- [Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(三) —— 数据的持久化——使用MongoDB存储爬取的数据
上一篇:[Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(二) -- 编写一个基本的 Spider 爬取微博用户信息 在上一篇博客中,我们已经新建了一个爬虫应用,并简单实现了爬取一位微 ...
- 一个月入门Python爬虫,轻松爬取大规模数据
如果你仔细观察,就不难发现,懂爬虫.学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方面,像 Python这样一个月入门Python爬虫,轻松爬的编程语言提供越来越多的优秀工具,让爬虫 ...
- python 爬虫实例 电影-Python爬虫教程-17-ajax爬取实例(豆瓣电影)
Python爬虫教程-17-ajax爬取实例(豆瓣电影) ajax: 简单的说,就是一段js代码,通过这段代码,可以让页面发送异步的请求,或者向服务器发送一个东西,即和服务器进行交互 对于ajax: ...
- Python爬虫系列之爬取微信公众号新闻数据
Python爬虫系列之爬取微信公众号新闻数据 小程序爬虫接单.app爬虫接单.网页爬虫接单.接口定制.网站开发.小程序开发 > 点击这里联系我们 < 微信请扫描下方二维码 代码仅供学习交流 ...
- 携程ajax,Python爬虫实战之爬取携程评论
一.分析数据源 这里的数据源是指html网页?还是Aajx异步.对于爬虫初学者来说,可能不知道怎么判断,这里辰哥也手把手过一遍. 提示:以下操作均不需要登录(当然登录也可以) 咱们先在浏览器里面搜索携 ...
- Python爬虫学习笔记 -- 爬取糗事百科
Python爬虫学习笔记 -- 爬取糗事百科 代码存放地址: https://github.com/xyls2011/python/tree/master/qiushibaike 爬取网址:https ...
最新文章
- Ubuntu 系统开机黑屏提示the root filesystem on /dev/sdb2 requires a manual fsck
- 在智能家庭用OpenCV实现人员检测
- 汇编 cmp_ARM汇编语言入门(二)
- Fabric 架构和概念
- mac mysql ip访问不了_解决mysql中只能通过localhost访问不能通过ip访问的问题
- 网页中设定表格边框的厚度的属性_网页试题
- C++的四种强制类型转换
- 当深度学习走进高考考场,会发生什么!!
- 项目服务器装系统,项目1服务器系统的安装.ppt
- 蚂蚁全媒体中心总编刘鑫炜解答:「李子柒说时代给了我一阵风」,成就自媒体网红需要哪些助力?
- doxygen 注释规范_Doxygen简明注释语法
- 图应用:骑士周游问题
- EgretInspector谷歌浏览器扩展
- 《二代征信》与你的生活息息相关 (1)
- IIC 通信协议 (二)
- 50 个杀手级人工智能项目
- 小酌重构系列[18]——重命名
- 按钮(Button, ImageButton)
- 宇宙工大路由器APP2021版使用教程
- ElasticSearch是什么?和Solr有什么区别?