python爬虫(爬取图片)

在家无聊写的爬虫程序,用来爬取图片,由于这个是好久之前写的,有点忘了,写的不详细,后面再写一份详细的  

爬虫的基本原理就是:  
发起请求->获取响应->解析内容->保存数据

第一步:发起请求,这一步需要用到requests库,此库专门用于发请求,一般需要一个headers用于伪装  

第二步:获取响应,这一步就是将刚才发请求后得到的响应保存到变量中,方便后面解析

第三步:解析内容(这一步是重点),就是将获取到的响应数据进行解析,一般可以用正则(用着头疼,高手的话当我没说)、beautifulsoup或者xpath,我这里用的是xpath,因为他是一层一层写的,我比较喜欢用这个 

最后一步:保存数据,对解析后的数据保存到本地,大功告成 

这里提一下,由于这个网站第一页的index不是1,所以爬取时起始页不能输入1(其他都可以,只要在这个网站的页码范围内),不然会报错

运行截图如下(我这里图片的命名用的是源码中解析出来的相关的中文字符串):

0b6cdaf317db4bbcb3ee93d256a1c62d.png

 

具体代码如下(使用时需要改一下保存地址,具体位置代码中已给出注释):

import requests
from lxml import etree
if __name__ == "__main__":
    url='https://pic.netbian.com/4kdongman/index_%d.html'
    headers={
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36"
    }
    a=eval(input('请输入起始页'))
    b=eval(input('请输入终止页'))
    for num in range(a,b):
        newurl=format(url%num)
        response=requests.get(url=newurl,headers=headers)
        response.encoding='gbk'
        text=response.text
        tree=etree.HTML(text)
        list=tree.xpath('//div[@class="slist"]/ul/li')
        for li in list:
            c_url='https://pic.netbian.com'+li.xpath('./a//@href')[0]
            c_response=requests.get(url=c_url,headers=headers)
            c_text=c_response.text
            c_tree=etree.HTML(c_text)
            c_list=c_tree.xpath('//div[@class="photo-pic"]/a/img/@src')[0]
            lasturl='https://pic.netbian.com'+c_list
            l_response=requests.get(url=lasturl,headers=headers)
            l_response.encoding='gbk'
            name = c_tree.xpath('//div[@class="photo-pic"]/a/img/@alt')[0]
            name=name.encode('iso-8859-1').decode('gbk')
            date=l_response.content
            path = 'D:\\图片\\' + name +'.jpg'# 根据自己需要改这里(name之前)
            with open(path, 'wb') as p:
                p.write(date)
            print(name, '爬取成功')
print('爬取完成')

 

 

 

 

 

 

 

  • 4
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愈辩已忘言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值