此博客仅作为交流学习

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

(此部分在于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. Java8中Stream()流的用法总结

    简单的集合遍历 foreach遍历 import java.util.ArrayList; import java.util.List; /** * @author rx * @date 2022/6 ...

  2. java的死锁与解决方法

    一.什么是死锁? 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无限等待. 二.产生死锁的原因与四个条件 2.1 死锁原因 竞争资 ...

  3. k8s基本操作

    注意:k8s的很多操作需要指定命名空间,如果不指定,默认default的命名空间,很多东西就查不出来了 kubectl get cs # 查看集群状态kubectl get nodes # 查看集群节 ...

  4. RPA主流厂商有哪些?

    RPA(机器人流程自动化(Robotic Process Automation)是一种能够自动化基于规则.结构化和重复的业务流程的技术.机器人流程自动化降低了成本,同时防止了人为错误,该技术目前已应用 ...

  5. Flutter 2 渲染原理和如何实现视频渲染

    7 月 17 日下午,在前端专场巡回沙龙北京站中,声网Agora跨平台开发工程师卢旭辉带来了<Flutter2 渲染原理和如何实现视频渲染>的主题分享,本文是对演讲内容的整理. 本次分享主 ...

  6. Dash 2.9.0版本重磅新功能一览

    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/dash-master 大家好我是费老师,就在昨晚,Dash框架发布了其2.9.0版本更新,在一众更新 ...

  7. Scanner基础用法

    Scanner基础用法 引入包java.util.Scanner 读一个单词 package charpter2; import java.util.Scanner; public class Sca ...

  8. flutter系列之:在flutter中使用媒体播放器

    目录 简介 使用前的准备工作 在flutter中使用video_player 总结 简介 现在的app功能越来越强大,除了基本的图文之外,还需要各种各样的其他的功能,比如视频,和直播. 直播可能会比较 ...

  9. 最新版 Harbor 在ubuntu系统上安装

    最新版 Harbor 在ubuntu系统上安装 The latest version of Harbor is installed on the ubuntu system 安装docker Inst ...

  10. [Python]【Form Data vs Request Payload】之 python 爬虫如何实现 POST request payload 形式的请求

    1 问题描述 欲使用Python的requests库(requests.session().request(...))实现对此Ajax的POST请求进行模拟实现. 但在chrome发现其请求的形式不一 ...