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