【python爬虫】对于微博用户发表文章内容和评论的爬取
此博客仅作为交流学习
对于喜爱的微博用户文章内容进行爬取
(此部分在于app页面进行爬取,比较方便)
分析页面

在这里进行json方法进行,点击Network进行抓包

发现数据加载是由这个页面发出的,查看期发出的内容

页面并不是一次性加载所有内容,而是在页面下拉的时候加载出后续内容
而后点击预览即可看见我们想要的元素

开始提取网页信息
response = requests.get(url=url)
data = response.json()
#pprint.pprint(data) #将页面内容规范为易懂可视页面
next_url = data['data']['cardlistInfo']
card = data['data']['cards']
for card in card:
#print(card)
mblog = card.get('mblog', None)
if mblog:
# 有内容再提取
mid = mblog.get('mid', None) # id
text = mblog.get('text', None) # 文章标题
source = mblog.get('source', None) # 发布平台
author_name = mblog.get('user', {}).get('screen_name', None) # 发布作者
created_at = mblog.get('created_at',None) #时间
print([text, source, author_name, mid])
这样就可以提取到博主发布文章的信息了
解析如何提取评论的信息,点击评论进行抓包

进入评论页面


那么我们只要在捕获博主页面后可以自动进入评论页面便好
寻找两个页面的联系,发现在博主页面的"mid"可以对于于评论链接的”mid“,那么只要捕获博主页面的"mid",并将赋予到字符串连接便可以找到对应评论
# 微博下的评论
comments_url = 'https://m.weibo.cn/comments/hotflow?id=' + mid + '&mid=' + mid + '&max_id_type=0'
# 爬取每一条数据下面的评论
requests.get(comments_url)
comments_response = requests.get(comments_url)
comments_data = comments_response.json()
#print(comments_data) if comments_data['ok'] == 1: #只读取有评论微博
data_list = comments_data['data']['data']
for comment in data_list:
comment_text = comment.get('text',None)
comment_mid = comment.get('mid',None)
username = comment['user']['screen_name']
print([comment_mid,username,comment_text])
这样就可以得到博主其中一个文章的内容和其评论了
我们接下来分析每一个博主文章之间的联系,以便于我们可以的得到每一个文章的信息
下拉找寻新加载出来抓包,发现有多出来一个字符串

对比上一个包发现只要捕获上一个包的”since_id“并赋予在上一个包的地址,便是下一个包的地址了
进行函数表达
def start(url):
response = requests.get(url=url)
data = response.json()
#pprint.pprint(data) #将页面内容规范为易懂可视页面
next_url = data['data']['cardlistInfo']
cat_url = next_url.get('since_id',None)
new_url = url + '&since_id=' + str(cat_url)
card = data['data']['cards']
for card in card:
#print(card)
mblog = card.get('mblog', None)
if mblog:
# 有内容再提取
mid = mblog.get('mid', None) # id
text = mblog.get('text', None) # 文章标题
source = mblog.get('source', None) # 发布平台
author_name = mblog.get('user', {}).get('screen_name', None) # 发布作者
created_at = mblog.get('created_at',None) #时间
print([text, source, author_name, mid])
#print(created_at) # 微博下的评论
comments_url = 'https://m.weibo.cn/comments/hotflow?id=' + mid + '&mid=' + mid + '&max_id_type=0'
# 爬取每一条数据下面的评论
requests.get(comments_url)
comments_response = requests.get(comments_url)
comments_data = comments_response.json()
#print(comments_data) if comments_data['ok'] == 1: #只读取有评论微博
data_list = comments_data['data']['data']
for comment in data_list:
comment_text = comment.get('text',None)
comment_mid = comment.get('mid',None)
username = comment['user']['screen_name']
print([comment_mid,username,comment_text])
start(new_url)
这样我们便可以捕获到全部博主的文章和评论
结果:

完整代码
import requests
import pprint
import time
def start(url):
response = requests.get(url=url)
data = response.json()
#pprint.pprint(data) #将页面内容规范为易懂可视页面
next_url = data['data']['cardlistInfo']
cat_url = next_url.get('since_id',None)
new_url = url + '&since_id=' + str(cat_url)
card = data['data']['cards']
for card in card:
#print(card)
mblog = card.get('mblog', None)
if mblog:
# 有内容再提取
mid = mblog.get('mid', None) # id
text = mblog.get('text', None) # 文章标题
source = mblog.get('source', None) # 发布平台
author_name = mblog.get('user', {}).get('screen_name', None) # 发布作者
created_at = mblog.get('created_at',None) #时间
#try = mblog.get('visible',{}).get('type',None)
#print(try)
print([text, source, author_name, mid])
#print(created_at)
# 微博下的评论
comments_url = 'https://m.weibo.cn/comments/hotflow?id=' + mid + '&mid=' + mid + '&max_id_type=0'
# 爬取每一条数据下面的评论
requests.get(comments_url)
comments_response = requests.get(comments_url)
comments_data = comments_response.json()
#print(comments_data)
if comments_data['ok'] == 1: #只读取有评论微博
data_list = comments_data['data']['data']
for comment in data_list:
comment_text = comment.get('text',None)
comment_mid = comment.get('mid',None)
username = comment['user']['screen_name']
print([comment_mid,username,comment_text])
time.sleep(2)
start(new_url)
if __name__ == '__main__':
url = '捕获的第一个包'
start(url)
【python爬虫】对于微博用户发表文章内容和评论的爬取的更多相关文章
- Python爬虫入门教程 33-100 《海王》评论数据抓取 scrapy
1. 海王评论数据爬取前分析 海王上映了,然后口碑炸了,对咱来说,多了一个可爬可分析的电影,美哉~ 摘录一个评论 零点场刚看完,温导的电影一直很不错,无论是速7,电锯惊魂还是招魂都很棒.打斗和音效方面 ...
- Python爬虫入门教程 4-100 美空网未登录图片爬取
美空网未登录图片----简介 上一篇写的时间有点长了,接下来继续把美空网的爬虫写完,这套教程中编写的爬虫在实际的工作中可能并不能给你增加多少有价值的技术点,因为它只是一套入门的教程,老鸟你自动绕过就可 ...
- 【python爬虫】对喜马拉雅上一个专辑的音频进行爬取并保存到本地
>>>内容基本框架: 1.爬虫目的 2.爬取过程 3.代码实现 4.爬取结果 >>>实验环境: python3.6版本,pycharm,电脑可上网. [一 爬虫目 ...
- python爬虫从入门到放弃(九)之 实例爬取上海高级人民法院网开庭公告数据
通过前面的文章已经学习了基本的爬虫知识,通过这个例子进行一下练习,毕竟前面文章的知识点只是一个 一个单独的散知识点,需要通过实际的例子进行融合 分析网站 其实爬虫最重要的是前面的分析网站,只有对要爬取 ...
- Python爬虫入门教程 13-100 斗图啦表情包多线程爬取
斗图啦表情包多线程爬取-写在前面 今天在CSDN博客,发现好多人写爬虫都在爬取一个叫做斗图啦的网站,里面很多表情包,然后瞅了瞅,各种实现方式都有,今天我给你实现一个多线程版本的.关键技术点 aioht ...
- Python爬虫__微博某个话题的内容数据
1 # -*- coding: utf-8 -*- 2 # @Time : 2020/8/18 15:39 3 # @Author : Chunfang 4 # @Email : 3470959534 ...
- python爬虫之User-Agent用户信息
python爬虫之User-Agent用户信息 爬虫是自动的爬取网站信息,实质上我们也只是一段代码,并不是真正的浏览器用户,加上User-Agent(用户代理,简称UA)信息,只是让我们伪装成一个浏览 ...
- 爬虫系列4:scrapy技术进阶之多页面爬取
多页面爬取有两种形式. 1)从某一个或者多个主页中获取多个子页面的url列表,parse()函数依次爬取列表中的各个子页面. 2)从递归爬取,这个相对简单.在scrapy中只要定义好初始页面以及爬虫规 ...
- 【Python3爬虫】微博用户爬虫
此次爬虫要实现的是爬取某个微博用户的关注和粉丝的用户公开基本信息,包括用户昵称.id.性别.所在地和其粉丝数量,然后将爬取下来的数据保存在MongoDB数据库中,最后再生成几个图表来简单分析一下我们得 ...
- Python爬虫:原来微博上的视频下载链接在这啊
最近看了一下网页版的微博,觉得那上面的视频不错,想获取它上面的下载链接,于是就写了这篇博文. 1. 几个视频播放平台的下载链接的实现 1. 西瓜视频 西瓜视频这个平台上面的视频下载链接一开始就存在于视 ...
随机推荐
- 115、商城业务---分布式事务---使用Springboot提供的Seata解决分布式事务
https://seata.io/zh-cn/ seata使用Seata AT模式控制分布式事务的步骤: 1.每一个想控制分布式事务的服务对应的数据库都需要创建一个UNDO_LOG 表 CREATE ...
- SXSSFWorkbook 表格内换行
起因 导出的excel需要在表格内换行,但搜索到的方法都实现不了我的需求,经同事搜查得知,这是POI的一个bug,已经在17年八月后被解决. 生成方式 pom依赖 <dependency> ...
- 韦东山005_ARM裸机1期加强版
005_ARM裸机1期加强版(又叫新1期,151节,23节免费,已完结)\新1期视频(151节,23节免费) 第006课开发板熟悉与体验(6节,免费) 第001节_开发板部件介绍与串口连接(免费) 如 ...
- windows系统下使用java语言,在mysql数据库中做定时数据备份、删除
有这样一个业务需求,需要将数据归档的表每月定时备份,并且删除之前表中的数据,话不多说,直接上代码! 注意:这种方法适合数据量小,业务要求不高的场景! 项目采用SpringBoot + MyBatis ...
- Linux部署JDK教程
上一次说了windows下的jdk部署,这一次记录下Linux下的jdk部署,恰巧遇到一篇写的很清楚的教程,我就直接转过来啦,哈哈.. 一. 解压安装jdk 在shell终端下进入jdk-6u14-l ...
- Color与字符串相互转换
string myfontcolor; this.label1.ForeColor = System.Drawing.ColorTranslator.FromHtml(myfontcolor); my ...
- GO语言学习笔记-包结构篇 Study for Go ! Chapter eight - Package Structure
持续更新 Go 语言学习进度中 ...... GO语言学习笔记-类型篇 Study for Go! Chapter one - Type - slowlydance2me - 博客园 (cnblogs ...
- gRPC之.Net6中的初步使用说明
1.介绍 GRPC是一个高性能.通用的开源远程过程调用(RPC)框架,基于底层HTTP/2协议标准和协议层Protobuf序列化协议开发,支持众多的开发语言,由Google开源. gRPC也是基于以下 ...
- python爬虫基础教程
爬虫介绍 爬虫就是程序,是从互联网中,各个网站上爬取数据(能浏览到的网页才可以爬),做数据清洗,入库 爬虫本质: 模拟http请求,获取数据,入库 网站/app > 抓包 我们日常使用的baid ...
- 在java中new一个对象的流程是什么?
Dog dog=new Dog()背后执行过程 这个涉及到字节码文件结构,类加载机制,堆,栈的认识等知识点. 在执行new的时候可以大致分为二个过程,初始化以及实例化,初始化就是类的加载过程,首先我们 ...