微博地址:蒋方舟微博

用到技术:requests+pyquery

分析页面

通过对比url发现,似乎只需要 改变page就能完成翻页

尝试把page=3放上去得到了如下内容,json序列化

点开调试工具的preview就能看到json反序列化

得来全不费工夫,里面包含了我们需要的所有内容

接着我们需要构造URL,requests中自带一个params()方法,能够拼接url

构造URL

url需要带的都在Query String Parameters中,并且需要把headers带上,在headers中要告诉requests这是个ajax。防止被发现是爬虫把UA和cookie带上。

headers = {'X-Requested-With': 'XMLHttpRequest',  #告诉爬虫这是个ajax'Host': 'm.weibo.cn','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36' ,'Cookie': '_T_WM=8d449523b94f82f4d802ff17c007d9e4; WEIBOCN_FROM=1110106030; ALF=1535700259; SCF=AvbLZWV0dg7vKvS_Bj3z2Ib9euGzCJyp9GGmpPLRDA3icmj4eGE1ln6Ac-Am0mqUskHocbTfcnEKdVn38KkQ-Jg.; SUB=_2A252ZRB0DeRhGeBL7lUQ8yjOzTmIHXVVqbA8rDV6PUNbktANLULnkW1NRu9NVF2gu03sOjAuC_gQ3rcDTGvnLlk2; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9WW3H-n4HdpyaWP-dHOmFR-g5JpX5KzhUgL.FoqfSKMpe0qESo-2dJLoIpWhIsLoIc_DdspLMoqXSK5X; SUHB=0h1Z4VOSSzYtHi; SSOLoginState=1533108260; MLOGIN=1; M_WEIBOCN_PARAMS=luicode%3D20000174%26lfid%3D102803%26uicode%3D20000174'}params = {'containerid': ' 2304131049198655_-_WEIBO_SECOND_PROFILE_WEIBO','page_type': '03','page': page,}url = 'https://m.weibo.cn/api/container/getIndex?'#通过params函数将URL补全response = requests.get(url, params=params, headers=headers)

获取id,内容,点赞数,回复数,转发数

items = html.get('data').get('cards')for i in items:i = dict(i).get('mblog')# 有的是没有内容的所以需要判断是否为字典类型if isinstance(i,dict):yield{'id':i.get('id'),'text':pq(i.get('text')).text(),  #通过pyquery将HTML标签去除'点赞数':i.get('attitudes_count'),'回复数':i.get('comments_count'),'转发数':i.get('reposts_count')

完整代码

import requests,re,json
from requests.exceptions import RequestException
from pyquery import PyQuery as pq
def get_one_page(page):headers = {'X-Requested-With': 'XMLHttpRequest',   #告诉爬虫这是个ajax'Host': 'm.weibo.cn','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36' ,'Cookie': '_T_WM=8d449523b94f82f4d802ff17c007d9e4; WEIBOCN_FROM=1110106030; ALF=1535700259; SCF=AvbLZWV0dg7vKvS_Bj3z2Ib9euGzCJyp9GGmpPLRDA3icmj4eGE1ln6Ac-Am0mqUskHocbTfcnEKdVn38KkQ-Jg.; SUB=_2A252ZRB0DeRhGeBL7lUQ8yjOzTmIHXVVqbA8rDV6PUNbktANLULnkW1NRu9NVF2gu03sOjAuC_gQ3rcDTGvnLlk2; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9WW3H-n4HdpyaWP-dHOmFR-g5JpX5KzhUgL.FoqfSKMpe0qESo-2dJLoIpWhIsLoIc_DdspLMoqXSK5X; SUHB=0h1Z4VOSSzYtHi; SSOLoginState=1533108260; MLOGIN=1; M_WEIBOCN_PARAMS=luicode%3D20000174%26lfid%3D102803%26uicode%3D20000174'}params = {'containerid': ' 2304131049198655_-_WEIBO_SECOND_PROFILE_WEIBO','page_type': '03','page': page,}url = 'https://m.weibo.cn/api/container/getIndex?'#通过params函数将URL补全response = requests.get(url, params=params, headers=headers)try:if response.status_code==200:return response.json()return Noneexcept RequestException:return '索引页错误'
def parse_one_page(html):items = html.get('data').get('cards')for i in items:i = dict(i).get('mblog')# 有的是没有内容的所以需要判断是否为字典类型if isinstance(i,dict):yield{'id':i.get('id'),'text':pq(i.get('text')).text(),   #通过pyquery将HTML标签去除'点赞数':i.get('attitudes_count'),'回复数':i.get('comments_count'),'转发数':i.get('reposts_count')}
def main():#只爬取10页的内容for sum in range(1,11):page = sumhtml = get_one_page(page)i= parse_one_page(html)with open('蒋方舟.text', 'a',encoding='utf8')as f:#返回过来的i是个生成器因此需要迭代出来for k in i:print(k)f.write(json.dumps(k,ensure_ascii=False)+'\n')
if __name__ == '__main__':main()

requests爬取微博相关推荐

  1. 用Requests库爬取微博照片

    用Requests库爬取微博照片 代码如下: #微博图片爬取 import requests import os #文件目录方法模块 url="https://wx3.sinaimg.cn/ ...

  2. python 爬虫热搜_Python网络爬虫之爬取微博热搜

    微博热搜的爬取较为简单,我只是用了lxml和requests两个库 1.分析网页的源代码:右键--查看网页源代码. 从网页代码中可以获取到信息 (1)热搜的名字都在 的子节点里 (2)热搜的排名都在 ...

  3. python跑一亿次循环_python爬虫爬取微博评论

    原标题:python爬虫爬取微博评论 python爬虫是程序员们一定会掌握的知识,练习python爬虫时,很多人会选择爬取微博练手.python爬虫微博根据微博存在于不同媒介上,所爬取的难度有差异,无 ...

  4. python 登陆微博 被删除 token_爬取微博信息,使用了cookie仍然无法登录微博

    按照网上的模板自己写了类似的代码爬取微博,可是response回来的html是登录界面的html,应该是没有成功登陆微博,但是和网上的代码是基本一样的 from bs4 import Beautifu ...

  5. python 爬关键词,Python爬虫实战:爬取微博热搜关键词

    一.爬取微博热搜关键词需要的第三方库 1.requests 2.BeautifulSoup 美味汤 3.worldcloud 词云 4.jieba 中文分词 5.matplotlib 绘图 二.爬取微 ...

  6. 看看你爱的他今天是什么‘颜色‘ -- Python爬取微博评论制作专属偶像词云

    简介:快来拿出你珍藏的pick star,用大家对他的爱重塑一个他吧.通过爬取微博评论,制作你的偶像图片词云,天天都是不重样的哦! 很多人学习python,不知道从何学起. 很多人学习python,掌 ...

  7. 爬取新笔趣阁排行并保存到mysql_python+selenium爬取微博热搜存入Mysql的实现方法...

    最终的效果 废话不多少,直接上图 这里可以清楚的看到,数据库里包含了日期,内容,和网站link 下面我们来分析怎么实现 使用的库 import requests from selenium.webdr ...

  8. python爬取微博恶评_Python爬取新浪微博评论数据,了解一下?

    开发工具 **Python版本:**3.6.4 相关模块: argparse模块: requests模块: jieba模块: wordcloud模块: 以及一些Python自带的模块. 环境搭建 安装 ...

  9. python怎么爬取知乎回答并制作词云_爬虫|爬取微博动态

    ​ 爬取微博是爬虫新手入门项目,相对简单.但没想到还是遇到了些问题.. 0 踩点 老规矩第一步先踩点.某个用户的微博网址为:https://weibo.com/u/id,其中id是一长串数字,每个用户 ...

最新文章

  1. 零压力学python_《零压力学Python》 之 第一章知识点归纳
  2. 【翻译】关于vertical-align所有你需要知道的
  3. 消息队列中数据丢失了怎么办
  4. 如何安装Linux操作系统
  5. moodle架构分析---数据连接层的设计
  6. Android 多屏幕适配 dp和px的关系
  7. Java内部类 Inner Class
  8. 两台主机经过路由器传送数据的网络原理
  9. GitHub 在热门 Node.js changelog 开源库Standard Version中发现 RCE 漏洞
  10. winform 更新服务器程序
  11. Facebook界面设计、网络操作系统和SNS大锅饭。
  12. MATLAB如何输出高分辨率图片?
  13. 关于iphone备份在c盘之后无法恢复备份的问题
  14. 工资低的.Net程序员,活该你工资低
  15. Vue使用插件v-viewer预览单张图片
  16. Android性能优化——启动优化简述
  17. 浏览器有网微信没网络连接服务器,电脑可以登陆微信但是浏览器无法联网是怎么回事儿...
  18. Typescript助力项目开发:JS切换TS、TS类型定制与思考
  19. echarts数据可视化系列:仪表盘
  20. Logstash系列之--JAVA自定义插件

热门文章

  1. Windows配置双网卡
  2. javascript的三种引入方式
  3. proxy error 500
  4. php mysql批量删除_php批量删除操作代码分享
  5. GoogleMap——谷歌地图Api的使用
  6. iis mvc html,IIS中使用ASP.NET MVC的经验总结
  7. linux netlink 机制,Linux Netlink 编程
  8. 深入探索 Android 网络优化(二、网络优化基础篇)下
  9. 静态变量static的理解
  10. 字体大小变化_变小变大