新手学爬虫——下载特定网页内图片2019-09-28

缘起:闲来无事想看漫画,结果该网站比较反人类,一次一张图片就算了加载速度死慢,甚为气恼,听说python能够实现图片分析下载,而近期又总听到python这个词,于是打算学习一下,杂七杂八的不说直接从爬图片开始吧。

import requests                                                 #引入requests库,默认是没有的需要安装,主要是获取网页数据

from lxml import etree                                         #引入lxml 库           默认没有安装需要安装,主要是解析网页数据,在该实例中主要是为解析图片原始链接       


url ='链接自己填'                                                   #分析下载图片的原始网页链接

headers = {

'Referer': url,                                                             #这一行和下一行为浏览器头部信息,主要为伪装浏览器,其中该行url为变量,内容为自己填的URL

    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'}

r=requests.get(url,headers=headers)                           # r 为自定义变量名称,requests.get 为请求并返回(url)内容,headers为伪装头部引用

books=etree.HTML(r.text)                                               #book 为自定义变量名称 etree.HTML为固定格式,改行主要为解析 r变量内内容

imgs=books.xpath('//*[@id="comic"]/@src')                    #imgs为自定义变量名称,book为上一行变量.xpath()为在book内定位括号内元素

print(imgs)                                                                        #输出上一行变量,主要为查看是否按照想法输出图片链接

for img in imgs:                                                                 #在imgs中查找img图片

    file_ad ="C://Users//MSI//PycharmProjects//doutula//imgs//"  # 存储位置

    real_ad = file_ad + url.split('/')[-1]                                    # 文件保存路径+ 从URL中截取最后一段为名字

    with open(real_ad+'.jpg', 'wb')as fd:                                 #因在url中截取的real_ad末尾并没有格式故在文件名后加入“.jpg”以添加固定格式

        picture=requests.get(img,headers=headers)               #图片请求因有反爬限制,故加入headers才能正常下载

        fd.write(picture.content)                                                 #以二进制形式写入图片


整个简单实例完成,

说一下遇到的坑:

第一个就是定位元素,元素定位我用f12查找源代码在里面copy xpath 但是一度无法使用,只能自己摸索,最后查找xpath使用规则+看了几个别的实例才稍微明白怎么用。

第二个 就是保存文件名的方法,从url分割我觉得还是比较好用的,因为通常URL有一定的顺序,无论单一还是多个都比较好用。

第三个就是请求图片链接加入的 headers头部伪装信息,现在不少网站都有反爬机制,不伪装要么无法连接,要么下的图片有问题。

最后就是重中之重,python有对齐规则,写的时候一定要注意位置是否匹配对齐规则

记录回顾一下今天的一个小成果,能帮助到新手更好。

你可能感兴趣的:(新手学爬虫——下载特定网页内图片2019-09-28)