| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> 爬取某个微博用户的所有微博内容及照片 -> 正文阅读 |
|
[Python知识库]爬取某个微博用户的所有微博内容及照片 |
因为今日头条似乎加入了反爬虫机制,所以ajax爬取今日头条街拍美图这个似乎做不出来了,于是找了微博用户作为替代,感觉两个例子比较相似,然后,个人感觉微博ajax爬取照片比较简单,而且能学到比较多的东西,然后也做出来了,下面是详细的教程: 首先,什么是ajax,ajax是异步的js和xml,具体的作用就是不更新网页的情况下,有新的数据,这个在微博中就非常常见了,我们打开个人主页去刷的时候,网页没有刷新,但是有新的内容更新,这个就是ajax最常见的的了,然后再理解一下,ajax是通过一个连接去找到对应的内容的。 下面,我们去通过微博(这里要注意,只有lite版的网页版微博才能找到ajax的信息,网址是https://m.weibo.cn)的页面进一步理解,以及,找到数据所在的地方,方便后面的爬取: 首先,我们搜索某个用户,并进入他的主页: ?(这样才是进入了某个用户的主页哦) 然后按下F12,看他的代码,打开网络,然后筛选器中,筛选frech/xhr,再按下Ctrl+R: ?(选中getindex开头的那个连接) (这里选中之后会去看到他的响应内容,我们找到相应内容中有cards一项的) ?这里有几个参数是比较重要的,通过对比你会发现,不同用户只是uid和containerid不同,然后同一用户的主页中这个getindex的uid和containerid是一致的(比如这里中大官微的uid:1892723783,containerid:1076031892723783),每次ajax这部分不变,然后我们来看他的数据: ?发现文章的内容、转发量等信息放在了cards里面的的0-9里面的mblog中的text,然后再来看图片放在了哪里,我们找到original_pic,他是一个连接,我们把这个连接复制一下然后前往: 发现他是一张图片,可以用get请求下载下来,经过比较发现,微博图片都放在 https://wx1.sinaimg.cn/large/(pic_id).jpg?中,所以我们只要知道每条微博的图片的pic_id就可以下载所有的图片,然后这里,我们确实再mblog中发现了pic_ids这个数据条: 所以后面可以通过pic_ids构造连接的方法去获取图片。? 所以下面的工作就简单了,就是找到getindex连接,利用ajax不断刷新内容但不刷新页面,然后get请求抓照片: 这里先列出所有要import的包,可以先去下载一下:
然后我们构造请求头和getindex都有的部分的url:
然后写获取一页getindex响应的函数:
然后写获取每个响应中图片的函数:
然后写个对响应中每个blog分析的函数:
最后写主函数:
run出来的结果: ?(工作目录中的result,图片都存在了对应的文件夹) 然后就完成啦! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 14:44:44- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |