python3.6抓取100知乎用户头像详解(四)
因公众号编辑器对代码不友好
在手机上阅读体验不佳
建议前往文末我的知乎文章链接
目标:抓取知乎最高点赞者的关注者的头像,并下载于本地文件夹。
我们采用:requests(获取)——json——urlretrieve(下载)
废话不多说,先上结果与代码:
前言:
:请求头(headers)
知乎对爬虫进行了限制,需要加上headers才能爬取。
请求头信息承载了关于客户端浏览器、请求页面、服务器等相关信息,用来告知服务器发起请求的客户端的具体信息。
对比知乎的请求头信息和常见的请求头信息,发现知乎请求头多了authorization和X-UDID的信息
:urlretrieve
urllib模块提供的urlretrieve()函数,可直接将远程数据下载到本地
:抓取页面,如图
现重点讲解代码四个部分:
一:请求头(headers)
每个网站的请求头都会不一样,但爬取得网站,都有例子,大家在不初期,跟着选就行
Authorization:HTTP授权的授权证书
User-Agent:代表你用哪种浏览器
X-UDID:一串验证码
二:真实的urls
异步加载中,真实的url并非https://www.zhihu.com/people/feifeimao/followers,真正的url需要我们通过抓包获取,流程如图:
所以我们得出真实url:https://www.zhihu.com/api/v4/members/feifeimao/followers?include=data%5B*%5D.answer_count%2Carticles_count%2Cgender%2Cfollower_count%2Cis_followed%2Cis_following%2Cbadge%5B%3F(type%3Dbest_answerer)%5D.topics&offset=20&limit=20
通过加载更多,我们发现url中start随之同步变化,变化的间隔为20,即offset=20(第一页),start=40(第二页),以此类推,所以我们得出.format(i*20),大家可以对比第三篇的翻页。
三:img_url
我们抓取的img的url需要有序的排列,即采用append函数,依次把他们放入img_url。
四:json
之前我们用得.text是需要网页返回文本的信息,而这里返回的是json文件,所以用.json
json结构很清晰,大家一层一层选取就好了
取出字典中的值,需要在方括号中指明值对应的键
总结:
1:翻页,就是寻找url中的规律,大家可以对比第二、三篇的翻页哦,都是一个套路。
2:请求头(headers)就像一把开启大门的钥匙
3:抓取的头像url尺寸很小,我们把_is去掉,就变成正常尺寸了,不过这需要用到正则re,目前我没有学习过re,后续的文章将会大家解决这个坑哦
https://pic2.zhimg.com/v2-9686febfd53ca3defe8112790b24e67e_is.jpg。
下一篇文章,将对前四篇的语法做详细讲解。
有不清楚的地方,大家可以留言,点赞,我看到了,会第一时间回复你。
知乎链接:https://www.zhihu.com/people/lei-an-15/posts
- Struts Interceptor Example
- 微信服务号模板消息接口新增"设置行业"和"添加模板"及细节优化
- WPF备忘录(3)如何从 Datagrid 中获得单元格的内容与 使用值转换器进行绑定数据的转换IValueConverter
- WPF备忘录(2)WPF获取和设置鼠标位置与progressbar的使用方法
- WPF文字修饰——上、中、下划线与基线
- 微信公众平台数据接口正式对所有认证公众号开放
- 参考基因组没有,经费也没那么多,怎么办?
- .Net下SQLite的DBHelp
- 数据库进程间通信解决方案之MQ
- 【学术】算法交易的神经网络:强化经典策略
- java.util.logging 例子
- WPF命令(Command)介绍、命令和数据绑定集成应用
- lncRNA实战项目-第六步-WGCNA相关性分析
- 【项目】Github上的一个简单项目:用人工智能预测大学录取概率
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python opencv图像处理基础总结(三) 图像直方图 直方图应用 直方图反向投影
- Python opencv图像处理基础总结(四) 模板匹配 图像二值化
- python pyecharts数据可视化 词云图 仪表盘 水球图
- python jupyter notebook配置 更改默认工作目录 更换皮肤主题 代码字体 大小
- 关于直播卖货系统平台在微信浏览器中音视频播放的问题
- python爬虫 scrapy爬虫框架的基本使用
- Python opencv图像处理基础总结(五) 图像金字塔 图像梯度 Canny算法边缘提取
- python scrapy爬虫练习(1) 爬取豆瓣电影top250信息
- python爬虫 senlenium爬取拉勾网招聘数据
- Python opencv图像处理基础总结(六) 直线检测 圆检测 轮廓发现
- 简单又强大的pandas爬虫 利用pandas库的read_html()方法爬取网页表格型数据
- python pyecharts数据可视化 折线图 箱形图
- Python爬虫 selenium自动化 利用搜狗搜索爬取微信公众号文章信息
- python 办公自动化系列 (1) 从22053条数据中统计断网次数并计算平均断网时间
- Python数据可视化 热力图