requests爬取微博
微博地址:蒋方舟微博
用到技术: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爬取微博相关推荐
- 用Requests库爬取微博照片
用Requests库爬取微博照片 代码如下: #微博图片爬取 import requests import os #文件目录方法模块 url="https://wx3.sinaimg.cn/ ...
- python 爬虫热搜_Python网络爬虫之爬取微博热搜
微博热搜的爬取较为简单,我只是用了lxml和requests两个库 1.分析网页的源代码:右键--查看网页源代码. 从网页代码中可以获取到信息 (1)热搜的名字都在 的子节点里 (2)热搜的排名都在 ...
- python跑一亿次循环_python爬虫爬取微博评论
原标题:python爬虫爬取微博评论 python爬虫是程序员们一定会掌握的知识,练习python爬虫时,很多人会选择爬取微博练手.python爬虫微博根据微博存在于不同媒介上,所爬取的难度有差异,无 ...
- python 登陆微博 被删除 token_爬取微博信息,使用了cookie仍然无法登录微博
按照网上的模板自己写了类似的代码爬取微博,可是response回来的html是登录界面的html,应该是没有成功登陆微博,但是和网上的代码是基本一样的 from bs4 import Beautifu ...
- python 爬关键词,Python爬虫实战:爬取微博热搜关键词
一.爬取微博热搜关键词需要的第三方库 1.requests 2.BeautifulSoup 美味汤 3.worldcloud 词云 4.jieba 中文分词 5.matplotlib 绘图 二.爬取微 ...
- 看看你爱的他今天是什么‘颜色‘ -- Python爬取微博评论制作专属偶像词云
简介:快来拿出你珍藏的pick star,用大家对他的爱重塑一个他吧.通过爬取微博评论,制作你的偶像图片词云,天天都是不重样的哦! 很多人学习python,不知道从何学起. 很多人学习python,掌 ...
- 爬取新笔趣阁排行并保存到mysql_python+selenium爬取微博热搜存入Mysql的实现方法...
最终的效果 废话不多少,直接上图 这里可以清楚的看到,数据库里包含了日期,内容,和网站link 下面我们来分析怎么实现 使用的库 import requests from selenium.webdr ...
- python爬取微博恶评_Python爬取新浪微博评论数据,了解一下?
开发工具 **Python版本:**3.6.4 相关模块: argparse模块: requests模块: jieba模块: wordcloud模块: 以及一些Python自带的模块. 环境搭建 安装 ...
- python怎么爬取知乎回答并制作词云_爬虫|爬取微博动态
爬取微博是爬虫新手入门项目,相对简单.但没想到还是遇到了些问题.. 0 踩点 老规矩第一步先踩点.某个用户的微博网址为:https://weibo.com/u/id,其中id是一长串数字,每个用户 ...
最新文章
- 零压力学python_《零压力学Python》 之 第一章知识点归纳
- 【翻译】关于vertical-align所有你需要知道的
- 消息队列中数据丢失了怎么办
- 如何安装Linux操作系统
- moodle架构分析---数据连接层的设计
- Android 多屏幕适配 dp和px的关系
- Java内部类 Inner Class
- 两台主机经过路由器传送数据的网络原理
- GitHub 在热门 Node.js changelog 开源库Standard Version中发现 RCE 漏洞
- winform 更新服务器程序
- Facebook界面设计、网络操作系统和SNS大锅饭。
- MATLAB如何输出高分辨率图片?
- 关于iphone备份在c盘之后无法恢复备份的问题
- 工资低的.Net程序员,活该你工资低
- Vue使用插件v-viewer预览单张图片
- Android性能优化——启动优化简述
- 浏览器有网微信没网络连接服务器,电脑可以登陆微信但是浏览器无法联网是怎么回事儿...
- Typescript助力项目开发:JS切换TS、TS类型定制与思考
- echarts数据可视化系列:仪表盘
- Logstash系列之--JAVA自定义插件