需求分析

微博主页

抓取的内容包括:微博发布的时间,正文(仅提取文字),转发数,评论数,点赞数

抓取的内容

数据是怎么加载的

新浪微博的数据是用ajax异步下拉加载的,在chrome的调试模式下可捕捉到相应的请求:

xhr请求

分析这些url的规律:

https://m.weibo.cn/api/container/getIndex?type=uid&value=1665372775&containerid=1076031665372775&page=2

https://m.weibo.cn/api/container/getIndex?type=uid&value=1665372775&containerid=1076031665372775&page=3

发现除了page参数的不同,其他都是一致的

数据的结构分析

json结构分析

返回的json数据结构中,我们需要的是以下字段:

data

cards

mblog

created_at # 发布时间

text # 正文

reposts_count # 转发数

comments_count # 评论数

attitudes_count # 点赞数

代码实现

首先确保安装了requests和pyquery库

pip install pyquery

pip install requests

具体代码解析:

import requests

from urllib.parse import urlencode

from pyquery import PyQuery as pq

host = 'm.weibo.cn'

base_url = 'https://%s/api/container/getIndex?' % host

user_agent = 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1 wechatdevtools/0.7.0 MicroMessenger/6.3.9 Language/zh_CN webview/0'

headers = {

'Host': host,

'Referer': 'https://m.weibo.cn/u/1665372775',

'User-Agent': user_agent

}

# 按页数抓取数据

def get_single_page(page):

params = {

'type': 'uid',

'value': 1665372775,

'containerid': 1076031665372775,

'page': page

}

url = base_url + urlencode(params)

try:

response = requests.get(url, headers=headers)

if response.status_code == 200:

return response.json()

except requests.ConnectionError as e:

print('抓取错误', e.args)

# 解析页面返回的json数据

def parse_page(json):

items = json.get('data').get('cards')

for item in items:

item = item.get('mblog')

if item:

data = {

'id': item.get('id'),

'text': pq(item.get("text")).text(), # 仅提取内容中的文本

'attitudes': item.get('attitudes_count'),

'comments': item.get('comments_count'),

'reposts': item.get('reposts_count')

}

yield data

if __name__ == '__main__':

for page in range(1, 10): # 抓取前十页的数据

json = get_single_page(page)

results = parse_page(json)

for result in results:

print(result)

运行结果

{'id': '4241354777389653', 'text': '【新书预售】\n\n我经常觉得生活就如同唐吉坷德,持一只长矛,去挑战一个个风车。你越是勇敢,你就越是可笑。我们必须正确认识自己,认识自己手里的兵器,也要认清我们要去挑战的是何种存在。\n\n这些风车有爱情,有亲情,有友谊,有远行,有阅读,亦有人性...我把自己跌跌撞撞挑战过的十八个风车,写成了 ...全文', 'attitudes': 646, 'comments': 509, 'reposts': 155}

{'id': '4276572205338096', 'text': '雪橇犬,鸟,鲸鱼,海豹,冰块,人(最后一张)。 格陵兰', 'attitudes': 35, 'comments': 18, 'reposts': 1}

{'id': '4276459473976711', 'text': '北极 微博视频', 'attitudes': 196, 'comments': 39, 'reposts': 12}

{'id': '4276308663690970', 'text': '真好看,魅力十足//@zhj居安:妈呀!太好看了吧!保持的真好,羡慕呀!', 'attitudes': 379, 'comments': 91, 'reposts': 191}

{'id': '4276172055838171', 'text': '在高铁渣男这件事上,我觉得乘警也必须要反思,如果不让座,必须强制执行。如果乘警不作为,个体的乘客如何能解决自己权益收到伤害的情形,难不成都要靠自己的拳头去解决问题?我们有些执法者的问题在于,该有善意的时候心狠,该心狠的时候又充满了没原则的善意。', 'attitudes': 3536, 'comments': 496, 'reposts': 601}

{'id': '4276152610951821', 'text': '恶心至极,不接受那虚伪的道歉,拉入高铁黑名单吧。//@刘力博士://@杨伯溆:太不可思议了//@芮法:唯物史观啊,哪有历史唯物主义史观之说。作者、编辑、刊物都太丢人了//@记录者老K:他还是学法律的 查看图片', 'attitudes': 407, 'comments': 287, 'reposts': 350}

python爬取微博评论_python爬虫抓取新浪微博数据相关推荐

  1. python爬贴吧回复_Python爬虫——抓取贴吧帖子

    对珊瑚老哥保证了自己会尽量补档动画MTV吧的资源,有空应该研究下爬虫了. 不要在意头图,我不会假借各位对某个动漫的爱好然后坑人的.无论是电磁炮吧主那种拿电磁铁糊弄人的奸商,还是逸站靠小林做幌子卖收费破 ...

  2. python爬取大众点评评论_python爬虫抓取数据 小试Python——爬虫抓取大众点评上的数据 - 电脑常识 - 服务器之家...

    python爬虫抓取数据 小试Python--爬虫抓取大众点评上的数据 发布时间:2017-04-07

  3. python爬虫抓取百度图片_Python爬虫抓取百度的高清摄影图片

    成果预览: 源代码: import requests import re url = 'https://image.baidu.com/search/index' headers = { 'User- ...

  4. python爬b站评论_Python爬虫入门教程 32-100 B站博人传评论数据抓取 scrapy

    1. B站博人传评论数据爬取简介 今天想了半天不知道抓啥,去B站看跳舞的小姐姐,忽然看到了评论,那就抓取一下B站的评论数据,视频动画那么多,也不知道抓取哪个,选了一个博人传跟火影相关的,抓取看看.网址 ...

  5. python爬大众点评手机号_Python爬虫丨大众点评数据爬虫教程(1)

    方式二: 需要安装fontTools包,没安装的请(pip install fontTools) from fontTools.ttLib import TTFont def get_xml(self ...

  6. python爬虫爬取股票软件数据_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储(转载)...

    完整代码 实际上,整个事情完成了两个相对独立的过程:1.爬虫获取网页股票数据并保存到本地文件:2.将本地文件数据储存到MySQL数据库.并没有直接的考虑把从网页上抓取到的数据实时(或者通过一个临时文件 ...

  7. python抓取数据库数据_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储...

    Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...

  8. python爬虫实现股票数据存储_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储!...

    Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...

  9. python爬虫资源大全_Python爬虫抓取纯静态网站及其资源(基础篇)

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:程序员宝库 **( 想要学习Python?Python ...

最新文章

  1. 第四周项目二-太乐了
  2. grpc入门到精通_Spring Cloud 从入门到精通(一)Nacos 服务中心初探
  3. java 如何使用dylib,如何在应用程序中使用dylib文件?
  4. OpenGL:关于获取渲染结果的深度信息的问题(二)
  5. java.security.NoSuchAlgorithmException: SHA_256 MessageDigest not available
  6. 网页与 alert() 一样用于弹框却比之多了一个取消选项的方法 confirm()
  7. Windows / VS下不同类型变量转换
  8. python小波包分解_Matlab小波包分解后如何求各频带信号的能量值?
  9. 自建rtmp直播和朋友一起异地看电影
  10. C盘hiberfil.sys文件可以删除吗?法2(推荐)
  11. lisp 焊缝标注_焊接符号标注 图纸
  12. linux ipv6添加路由器,使用Linux搭建IPV6路由器(CentOS版)
  13. 2021华为软件精英挑战赛,思路框架,欢迎留言讨论
  14. 企业网络安全问题的痛点分析
  15. MySQL学习笔记一
  16. 多版本node安装相关知识
  17. 初识对象,对象的创建以及方法的定义规则
  18. ssm+JSP计算机毕业设计高校疫情日报管理信息系统abk6n【源码、程序、数据库、部署】
  19. 十款超高人气FTP客户端软件横评
  20. 关于易school的使用体验

热门文章

  1. 这就是你日日夜夜想要的docker!!!---------Docker常规操作--端口映射、数据卷管理 以及容器互联
  2. 午睡起来发现了很精美的windows壁纸
  3. 主干开发(Trunk-based development)
  4. 抽象代数 04.01 群的生成元组
  5. 最新版 sublime text 3 切换中文方法
  6. [校招] 英文句子单词反转 - 哔哩哔哩 2020
  7. wp/wordpress 自定义模板调用函数
  8. flutter rpx屏幕适配方案
  9. 后端/Java/大数据/C++ 校招内推面经
  10. 计算机光驱运行功能,电脑如何设置光驱位第一启动项