当前位置:AIGC资讯 > 数据采集 > 正文

python爬虫(爬取图片)

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

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

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

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

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

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

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

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

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

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('爬取完成')

更新时间 2023-11-08