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爬虫-爬微博】爬取王思聪所有微博数据相关推荐

  1. python怎么爬虎牙_使用python爬虫框架scrapy抓取虎牙主播数据

    前言 本文利用python的scrapy框架对虎牙web端的主播.主播订阅数.主播当前观看人数等基本数据进行抓取,并将抓取到的数据以csv格数输出,以及存储到mongodb中 思路 观察虎牙网站后确认 ...

  2. python爬虫——使用selenium爬取微博数据(一)

    python爬虫--使用selenium爬取微博数据(二) 写在前面 之前因为在组里做和nlp相关的项目,需要自己构建数据集,采用selenium爬取了几十万条微博数据,学习了很多,想在这里分享一下如 ...

  3. [Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(二) —— 编写一个基本的 Spider 爬取微博用户信息

    上一篇:[Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(一) -- 新建爬虫项目 在上一篇我们新建了一个 sina_scrapy 的项目,这一节我们开始正式编写爬虫的代码. 选择目标 ...

  4. [Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(四) —— 应对反爬技术(选取 User-Agent、添加 IP代理池以及Cookies池 )

    上一篇:[Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(三) -- 数据的持久化--使用MongoDB存储爬取的数据 最近项目有些忙,很多需求紧急上线,所以一直没能完善< 使用 ...

  5. [Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(三) —— 数据的持久化——使用MongoDB存储爬取的数据

    上一篇:[Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(二) -- 编写一个基本的 Spider 爬取微博用户信息 在上一篇博客中,我们已经新建了一个爬虫应用,并简单实现了爬取一位微 ...

  6. 一个月入门Python爬虫,轻松爬取大规模数据

    如果你仔细观察,就不难发现,懂爬虫.学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方面,像 Python这样一个月入门Python爬虫,轻松爬的编程语言提供越来越多的优秀工具,让爬虫 ...

  7. python 爬虫实例 电影-Python爬虫教程-17-ajax爬取实例(豆瓣电影)

    Python爬虫教程-17-ajax爬取实例(豆瓣电影) ajax: 简单的说,就是一段js代码,通过这段代码,可以让页面发送异步的请求,或者向服务器发送一个东西,即和服务器进行交互 对于ajax: ...

  8. Python爬虫系列之爬取微信公众号新闻数据

    Python爬虫系列之爬取微信公众号新闻数据 小程序爬虫接单.app爬虫接单.网页爬虫接单.接口定制.网站开发.小程序开发 > 点击这里联系我们 < 微信请扫描下方二维码 代码仅供学习交流 ...

  9. 携程ajax,Python爬虫实战之爬取携程评论

    一.分析数据源 这里的数据源是指html网页?还是Aajx异步.对于爬虫初学者来说,可能不知道怎么判断,这里辰哥也手把手过一遍. 提示:以下操作均不需要登录(当然登录也可以) 咱们先在浏览器里面搜索携 ...

  10. Python爬虫学习笔记 -- 爬取糗事百科

    Python爬虫学习笔记 -- 爬取糗事百科 代码存放地址: https://github.com/xyls2011/python/tree/master/qiushibaike 爬取网址:https ...

最新文章

  1. Ubuntu 系统开机黑屏提示the root filesystem on /dev/sdb2 requires a manual fsck
  2. 在智能家庭用OpenCV实现人员检测
  3. 汇编 cmp_ARM汇编语言入门(二)
  4. Fabric 架构和概念
  5. mac mysql ip访问不了_解决mysql中只能通过localhost访问不能通过ip访问的问题
  6. 网页中设定表格边框的厚度的属性_网页试题
  7. C++的四种强制类型转换
  8. 当深度学习走进高考考场,会发生什么!!
  9. 项目服务器装系统,项目1服务器系统的安装.ppt
  10. 蚂蚁全媒体中心总编刘鑫炜解答:「李子柒说时代给了我一阵风」,成就自媒体网红需要哪些助力?
  11. doxygen 注释规范_Doxygen简明注释语法
  12. 图应用:骑士周游问题
  13. EgretInspector谷歌浏览器扩展
  14. 《二代征信》与你的生活息息相关 (1)
  15. IIC 通信协议 (二)
  16. 50 个杀手级人工智能项目
  17. 小酌重构系列[18]——重命名
  18. 按钮(Button, ImageButton)
  19. 宇宙工大路由器APP2021版使用教程
  20. ElasticSearch是什么?和Solr有什么区别?

热门文章

  1. iphone html5 摄像头,苹果为何容忍iPhone6摄像头突出?
  2. 财务自由路上最大的陷阱:工作
  3. 【指法练习】还在迷茫寒假要干什么事情吗?
  4. Symbian官方开发者网站现已开放
  5. 域名解析常见问题(上)
  6. 足球报:青岛中能提出仲裁申请,希望撤销扣分处罚_虎扑中国足球新闻
  7. MySQL基础知识点整理 - 账号和权限管理
  8. 冠群金辰总经理孙冠军:主动出击防病毒是幻想?
  9. viterbi算法通俗理解
  10. 从零开始实现递归神经网络——【torch学习笔记】