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

本文来自企鹅号 - 全球大搜罗媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏.net core新时代

数据字典生成工具之旅(1):开篇有益

       最近在做公司需求的时候,发现一个很低效的点,在建表的时候需要使用公司自己开发的建模工具进行创建表,一个字段一个字段的复制粘贴让人受不了。于是萌发了...

4199
来自专栏杨建荣的学习笔记

一个95后开发者关于消息发送的实践

这篇文章最开始投给我的时候,没有引起太多的重视,但是看了内容之后,真是被里面的细节吸引了。

1100
来自专栏SeanCheney的专栏

深入理解Python异步编程(上)

彻底理解异步编程是什么、为什么、怎么样。深入学习asyncio的基本原理和原型,了解生成器、协程在Python异步编程中是如何发展的。

7192
来自专栏北京马哥教育

Python 爬虫实战:股票数据定向爬虫

功能简介 目标: 获取上交所和深交所所有股票的名称和交易信息。 输出: 保存到文件中。 技术路线: requests—bs4–re 语言:python3.5 ...

40111
来自专栏iOSDevLog

如何在50行以下的Python代码中创建Web爬虫

有兴趣了解Google,Bing或Yahoo的工作方式吗?想知道抓取网络需要什么,以及简单的网络抓取工具是什么样的?在不到50行的Python(版本3)代码中,...

922
来自专栏小樱的经验随笔

CTF---Web入门第十六题 天下武功唯快不破

天下武功唯快不破分值:10 来源: 北邮天枢战队 难度:易 参与人数:10787人 Get Flag:2264人 答题人数:3373人 解题通过率:67% ...

3066
来自专栏腾讯移动品质中心TMQ的专栏

基于 hook 和 gmock 开展单元测试

单元测试又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函...

8892
来自专栏友弟技术工作室

程序员必知必会的那些邪恶的脚本

朝圣 前言 程序员必须掌握一定的运维知识。本文通过一些邪恶,搞破坏的方式。教会你一些危险的脚本操作。 附赠 运维意识与运维规范 1.线上操作规范 ...

3527
来自专栏数据小魔方

R语言网络数据抓取的又一个难题,终于攻破了!

单纯从数据抓取的逻辑来讲(不谈那些工程上的可用框架),个人觉得R语言中现有的请求库中,RCurl和httr完全可以对标Python中的urllib和reuqes...

4303
来自专栏大数据挖掘DT机器学习

使用Python编写网络爬虫抓取视频下载资源

Python因为其强大的字符串处理能力,以及urllib2,cookielib,re,threading这些模块的存在,用Python来写爬虫就简直易于反掌了。...

7346

扫码关注云+社区

领取腾讯云代金券