这是崔斯特的第六篇原创文章
轮子哥护体
首先上收藏夹 https://www.zhihu.com/collection/78172986?page=1
由@vega13创建,内容挺多的。例如,
等等,看的老夫脸都红了
写了一个简单爬取图片的程序。记录下过程。手动 @轮子哥
1、分析网页
收藏夹只收藏了问题的一个答案,初步想法是获取当前页面的图片
因为上一次原因,直接去网页源代码
<img src="https://pic4.zhimg.com/de5ecb16bcb912e99a83f647eb96c5bb_200x112.jpg" data-rawwidth="1080" data-rawheight="1080" class="origin_image inline-img zh-lightbox-thumb" data-original="https://pic4.zhimg.com/de5ecb16bcb912e99a83f647eb96c5bb_r.jpg">
<img data-rawwidth="1280" data-rawheight="1836" src="https://pic2.zhimg.com/v2-61ba67d910104f99acdb805a3568ab05_200x112.jpg" class="origin_image inline-img zh-lightbox-thumb" data-original="https://pic2.zhimg.com/v2-61ba67d910104f99acdb805a3568ab05_r.jpg">
在<img>
标签下,src
和data-original
都含有图片链接,经验证data-original
是大图,那就把每个问题的图片链接找到了,接下来就很简单了。
2、代码
就18行的代码。简单吧~
import requests,urllib
from lxml import etree
def get_img(url):
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'}
r= requests.get(url,headers=headers).text
s = etree.HTML(r)
#print(r)
link = s.xpath('//img/@data-original')
for i in link:
print(i)
name = i.split('/')[-1]#图片名称
urllib.request.urlretrieve(i,name)
if __name__ == '__main__':
for i in range(1,43):
url = 'https://www.zhihu.com/collection/78172986?page=' + str(i)
get_img(url)
但是这样存在一个问题
link = s.xpath('//img/@data-original')
这里的link只有每个回答的第一张图片,更多的图片藏在文本中,除了正则不知道还有没有更好的办法
只有200多张图片。结尾有百度云
下载了几分钟出现错误,有一张图片下载不了,知友们有什么好办法吗?
三、“轮带逛”高级篇
既然有初级篇,肯定还有高级篇。
其实这个收藏夹中每一个问题下面都含有很多回答,收藏夹只是选取其中一个,也就是被轮子哥点赞的那个,那么还有那些没有被点赞的呢?
下一期讲一讲怎么获取所有图片链接。
放一张图片,卡死我程序的
—————————————最后的小广告—————————————–
有朋友竟然叫我去作一期直播,讲一讲Python。
打算根据自己的经历分享一些经验,主要是关于Python入门的,想听听可以私信我。
时间是周二晚9点~
百度云下载
链接:http://pan.baidu.com/s/1dFOPbUx 密码:abrl