微博地址:蒋方舟微博

用到技术: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. tf.expand_dims() 的用法
  2. 机器学习系列之手把手教你实现一个 naiveBayes
  3. linux下利用C或C++语言调用需要root权限的函数
  4. C语言 指针数组和数组指针区别 - C语言零基础入门教程
  5. 卡内基梅隆计算机专业,详解卡内基梅隆大学计算机学院
  6. 基于OpenCV与MFC的人脸识别
  7. VS2017离线安装过程及下载缓慢处理(项目打包部署)
  8. 如何判断函数极值点与拐点
  9. 带蒙版的安卓剪辑软件_史上最全的手机剪辑软件测评,最好用的竟然没人听过?!...
  10. 搜狗输入法安装上问题
  11. 朱松纯领衔、北大清华超强联合,开启「通用人工智能实验班」
  12. 未来计算机发展的三大趋势,报告:5G未来发展会有三大趋势 中国有望成为全球最大的AI市场...
  13. SAP BPC-通过Input Schedul输入与DM运行Logic计算两种情况下的LEQ/INC科目的正负号问题...
  14. 拼写单词(leetcode 1160)
  15. TLS1.3 协议的加密过程
  16. DAHUA拼接屏操作步骤
  17. C/C++ 五子棋游戏
  18. Chromedriver安装教程(简洁版)
  19. JavaScript--【JS】排他思想
  20. 【软件笔记------FreeCAD】------新建零件导出到STL文件的演示

热门文章

  1. iperf测试网络带宽
  2. 高考满分作文生成器来了!分分钟批量完成「生活在XX上」,哲学文学物理各种领域任选......
  3. div手绘页面布局(上下左右中)
  4. 敏感词屏蔽——AC自动机
  5. 冰河公开了其总结的一项重要的编程技能!
  6. 独家交付秘籍之招式拆解(第一回)
  7. netlink socket
  8. onclick 常用手册
  9. 「newbee-mall新蜂商城开源啦」1000 Star Get !仓库Star数破千!记录一下
  10. QQmusic imitations record 第二天