此博客仅作为交流学习

对于喜爱的微博用户文章内容进行爬取

(此部分在于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爬虫】对于微博用户发表文章内容和评论的爬取的更多相关文章

  1. Python爬虫入门教程 33-100 《海王》评论数据抓取 scrapy

    1. 海王评论数据爬取前分析 海王上映了,然后口碑炸了,对咱来说,多了一个可爬可分析的电影,美哉~ 摘录一个评论 零点场刚看完,温导的电影一直很不错,无论是速7,电锯惊魂还是招魂都很棒.打斗和音效方面 ...

  2. Python爬虫入门教程 4-100 美空网未登录图片爬取

    美空网未登录图片----简介 上一篇写的时间有点长了,接下来继续把美空网的爬虫写完,这套教程中编写的爬虫在实际的工作中可能并不能给你增加多少有价值的技术点,因为它只是一套入门的教程,老鸟你自动绕过就可 ...

  3. 【python爬虫】对喜马拉雅上一个专辑的音频进行爬取并保存到本地

    >>>内容基本框架: 1.爬虫目的 2.爬取过程 3.代码实现 4.爬取结果  >>>实验环境: python3.6版本,pycharm,电脑可上网. [一 爬虫目 ...

  4. python爬虫从入门到放弃(九)之 实例爬取上海高级人民法院网开庭公告数据

    通过前面的文章已经学习了基本的爬虫知识,通过这个例子进行一下练习,毕竟前面文章的知识点只是一个 一个单独的散知识点,需要通过实际的例子进行融合 分析网站 其实爬虫最重要的是前面的分析网站,只有对要爬取 ...

  5. Python爬虫入门教程 13-100 斗图啦表情包多线程爬取

    斗图啦表情包多线程爬取-写在前面 今天在CSDN博客,发现好多人写爬虫都在爬取一个叫做斗图啦的网站,里面很多表情包,然后瞅了瞅,各种实现方式都有,今天我给你实现一个多线程版本的.关键技术点 aioht ...

  6. Python爬虫__微博某个话题的内容数据

    1 # -*- coding: utf-8 -*- 2 # @Time : 2020/8/18 15:39 3 # @Author : Chunfang 4 # @Email : 3470959534 ...

  7. python爬虫之User-Agent用户信息

    python爬虫之User-Agent用户信息 爬虫是自动的爬取网站信息,实质上我们也只是一段代码,并不是真正的浏览器用户,加上User-Agent(用户代理,简称UA)信息,只是让我们伪装成一个浏览 ...

  8. 爬虫系列4:scrapy技术进阶之多页面爬取

    多页面爬取有两种形式. 1)从某一个或者多个主页中获取多个子页面的url列表,parse()函数依次爬取列表中的各个子页面. 2)从递归爬取,这个相对简单.在scrapy中只要定义好初始页面以及爬虫规 ...

  9. 【Python3爬虫】微博用户爬虫

    此次爬虫要实现的是爬取某个微博用户的关注和粉丝的用户公开基本信息,包括用户昵称.id.性别.所在地和其粉丝数量,然后将爬取下来的数据保存在MongoDB数据库中,最后再生成几个图表来简单分析一下我们得 ...

  10. Python爬虫:原来微博上的视频下载链接在这啊

    最近看了一下网页版的微博,觉得那上面的视频不错,想获取它上面的下载链接,于是就写了这篇博文. 1. 几个视频播放平台的下载链接的实现 1. 西瓜视频 西瓜视频这个平台上面的视频下载链接一开始就存在于视 ...

随机推荐

  1. SDN实验环境配置

  2. android装包

    一.找到对应包体apk 二.数据线连接电脑及手机,弹出USB连接选项并选择传输文件 注:如果未弹出USB连接选项可尝试换根数据线解决 三.点击我的电脑找到本机设备 四.将对应包体文件拖入本机设备 五. ...

  3. Windows10系统快速安装.NET Framework3.5的方法&常见问题处理方法

    Windows10系统快速安装.NET Framework3.5的方法&常见问题处理方法 因为我的win10想了办法来禁止自动更新,就无法照正常办法安装.NET Framework3.5,解决 ...

  4. 飞桨AI 文本实体抽取 数据准备(excel 文本标注)

    网纸: https://ai.baidu.com/easydl/app/deploy/tee/public #!/usr/bin/env python3 # -*- coding: utf-8 -*- ...

  5. windos 环境下载安装seata

    参考: https://blog.csdn.net/lianghecai52171314/article/details/127330916

  6. 理解Map-构建关联数组

    理解Map 要更深入理解map,学习如何构建关联数组是很有帮助的,以下是简单实现 package org.example.onjava.senior.example03collection.map; ...

  7. flutter系列之:创建一个内嵌的navigation

    目录 简介 搭建主Navigator 构建子路由 总结 简介 我们在flutter中可以使用Navigator.push或者Navigator.pushNamed方法来向Navigator中添加不同的 ...

  8. Android笔记--选择按钮

    复选框CheckBox 具体实现: 注意: 开关按钮switch 具体实现: 单选按钮RadioButton 需要放到radioGroup里面写单选按钮 具体实现:

  9. 【NLP 系列】Bert 词向量的空间分布

    作者:京东零售 彭馨 1. 背景 我们知道Bert 预训练模型针对分词.ner.文本分类等下游任务取得了很好的效果,但在语义相似度任务上,表现相较于 Word2Vec.Glove 等并没有明显的提升. ...

  10. 程序员必须掌握的java进制转换(全网最详细讲解)

    前言 在上一篇文章中,壹哥给大家讲了Java里的各种运算符.其中在讲解位运算符时,我给大家提到了计算机中进制的概念.但是现在很多小白同学,对进制的概念还不够了解,比如二进制.八进制.十六进制都是怎么回 ...