python爬取妹纸图片

初学python,刚好看到爬取妹纸图片的教学视频,于是跟着学习学习python网络爬虫,使用python爬取图片。

进入主页,可以看到妹子自拍,一共446页之多 0.0 ,如下图所示:

python爬取妹纸图片_第1张图片

查看网页url可以发现comment-page-xxx,其中xxx就是页码,表示当前是第几页。

按下F12查看源网页,鼠标移动到

python爬取妹纸图片_第2张图片

不难看出之后跟着的src=后的url和data-original=后的url就是我们要爬取的图片了。复制url用网页打开,果然就是图片链接,如图:

python爬取妹纸图片_第3张图片

而python中可以利用lxml中的etree进行html解析,快速定位到图片url,将爬取的图片根据页码和张数命名保存只本地即可。

         目的明确后就是写代码了,但是直接使用python中的requests访问网页是无法访问的,因为一些网站都会做一些反爬机制。以妹子图网站来说,请求网页至少需要携带两个参数,一个是用户代理User-Agent( 一些网站常常通过判断 User-Agent 来给不同的操作系统、不同的浏览器发送不同的页面,如果请求时不加这个参数,可能无法请求。),其次是防盗链referer。必需要将这两个参数加在请求头中才能正常的请求到数据。而要获取这两个参数值,则需要在Network中的 Headers中查看,如图:

python爬取妹纸图片_第4张图片

更换不同页面,发现referer的值与网页url的值是一致的,而user-agent是不变的。 

测试环境:Win10    JetBrains PyCharm 2019.2.2 x64(需要提前使用pip/pip3命令安装好lxml和requests包)

参考代码如下所示:

import requests
from lxml import etree

for i in range(446):
    url = "https://www.mzitu.com/zipai/comment-page-{}/".format(i);
    print(url)
    heads = {"user-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36"}
    heads.update(referer=url)
    response = requests.get(url + "#comments", headers = heads)
    html = etree.HTML(response.text)
#   alt_list = html.xpath('//img[@class="lazy"]/@alt')
    src_list = html.xpath('//img[@class="lazy"]/@data-original')
    j = 0
    for src in src_list:
        j = j + 1
        content = requests.get(src, headers=heads).content
        filename = "photos\\{}_{}.jpg".format(i,j)
        print("正在保存图片文件:{}".format(filename))
        with open(filename, "wb") as f:
            f.write(content)

图片爬取结果:

python爬取妹纸图片_第5张图片

python爬取妹纸图片_第6张图片

教程仅供学习交流,若有侵权请联系删除~ 

你可能感兴趣的:(Python学习)