python爬虫入门看这个就够了python3爬虫案例详解系列Python爬虫作业

python3.6抓取100知乎用户头像详解(四)

2017-12-30  本文已影响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

下一篇文章,将对前四篇的语法做详细讲解。

有不清楚的地方,大家可以留言,点赞,我看到了,会第一时间回复你。

本系列文章同步跟新于微信公众号工科男雷先生。知乎:雷之

上一篇 下一篇

猜你喜欢

热点阅读