Python爬虫爬取网站图片

 更新时间:2022年1月2日 23:29  点击:243 作者:fff2zrx

此次python3主要用requests,解析图片网址主要用beautiful soup,可以基本完成爬取图片功能,

爬虫这个当然大多数人入门都是爬美女图片,我当然也不落俗套,首先也是随便找了个网址爬美女图片

from bs4 import BeautifulSoup
import requests
 
 
if __name__=='__main__':
    url='http://www.27270.com/tag/649.html'
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"}
    req = requests.get(url=url, headers=headers)
    req=requests.get(url=url,headers=headers)
    req.encoding = 'gb2312'
    html=req.text
    bf=BeautifulSoup(html,'lxml')
    targets_url=bf.find('div',class_='w1200 oh').find_all('a',target='_blank')
    for each in targets_url:
        img_req=requests.get(url=each.get('href'),headers=headers)
        img_req.encoding = 'gb2312'
        html = img_req.text
        bf = BeautifulSoup(html, 'lxml')
        img_url = bf.find('div', class_='articleV4Body').find('img')['src']
        name=each.img.get('alt')+'.jpg'
        path=r'C:\Users\asus\Desktop\新建文件夹'
        file_name = path + '\\' + name
        try:
            req1=requests.get(img_url,headers=headers)
            f=open(file_name,'wb')
            f.write(req1.content)
            f.close()
        except:
            print("some error")

期间遇到的一个情况是,它到访问img_url的时候总报错连接主机失败,我开始以为是网址加了反爬之类的,但是我单独拿出来一个网址,却可以很容易的访问,百思不得其解,最后咨询大佬告诉我把img_url的每一个都试试看,可能是某一个网址出了问题,找了找果然是有个叛徒,产生的img_url中第二个网址无法访问,怪不得老报错,我应该多试几个的,一叶障目

我同时也是个火影迷,掌握基本方法后准备试试爬取火影图片,也是网址找了个网址:

http://desk.zol.com.cn/dongman/huoyingrenzhe/

可以看到火影的图片是以图集的形式储存的,所以这个下载就比刚才的稍微多了一点步骤

查看网站源代码容易发现,图集的链接所在都是class='photo-list-padding'的li标签里,且链接没有补全

点开其中一个链接, http://desk.zol.com.cn/dongman/huoyingrenzhe/(前面为浏览器自动补全,在代码里需要自己补全)

可以看到图片的下载地址以及打开本图集下一张图片的链接

了解完网站的图片构造后动手写代码,我们筛选出图集的链接后,通过图集的链接找到第一张图片下载地址和第二张图片的链接,通过第二张的链接找到第二张的下载地址和第三张的链接,循环下去,直到本图集到底,接着开始第二个图集,直到所有图集下载完毕,代码如下,为了方便循环,我们集成下载图片功能为download函数,解析图片网址功能为parses_picture

from bs4 import BeautifulSoup
import requests
 
def download(img_url,headers,n):
    req = requests.get(img_url, headers=headers)
    name = '%s'%n+'='+img_url[-15:]
    path = r'C:\Users\asus\Desktop\火影壁纸1'
    file_name = path + '\\' + name
    f = open(file_name, 'wb')
    f.write(req.content)
    f.close
 
def parses_picture(url,headers,n):
    url = r'http://desk.zol.com.cn/' + url
    img_req = requests.get(url, headers=headers)
    img_req.encoding = 'gb2312'
    html = img_req.text
    bf = BeautifulSoup(html, 'lxml')
    try:
        img_url = bf.find('div', class_='photo').find('img').get('src')
        download(img_url,headers,n)
        url1 = bf.find('div',id='photo-next').a.get('href')
        parses_picture(url1,headers,n)
    except:
        print(u'第%s图片集到头了'%n)
 
if __name__=='__main__':
    url='http://desk.zol.com.cn/dongman/huoyingrenzhe/'
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"}
    req = requests.get(url=url, headers=headers)
    req=requests.get(url=url,headers=headers)
    req.encoding = 'gb2312'
    html=req.text
    bf=BeautifulSoup(html,'lxml')
    targets_url=bf.find_all('li',class_='photo-list-padding')
    n=1
    for each in targets_url:
        url = each.a.get('href')
        parses_picture(url,headers,n)
        n=n+1

期间遇到的一个情况是每次一个图集到底的时候,就会产生报错,因为找不到下一张图片的链接了,于是我便加上try语句来捕捉这一报错,让程序继续下去,有了bf果然比正则表达式简单,可以通过标签属性很方便的找到想要的信息。

下载情况

到此这篇关于Python爬虫爬取网站图片的文章就介绍到这了,更多相关Python爬取网站图片内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!

原文出处:https://blog.csdn.net/qq_38412868/article/details/82080260

[!--infotagslink--]

相关文章

  • python opencv 画外接矩形框的完整代码

    这篇文章主要介绍了python-opencv-画外接矩形框的实例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-04
  • Python astype(np.float)函数使用方法解析

    这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08
  • 最炫Python烟花代码全解析

    2022虎年新年即将来临,小编为大家带来了一个利用Python编写的虎年烟花特效,堪称全网最绚烂,文中的示例代码简洁易懂,感兴趣的同学可以动手试一试...2022-02-14
  • python中numpy.empty()函数实例讲解

    在本篇文章里小编给大家分享的是一篇关于python中numpy.empty()函数实例讲解内容,对此有兴趣的朋友们可以学习下。...2021-02-06
  • python-for x in range的用法(注意要点、细节)

    这篇文章主要介绍了python-for x in range的用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-10
  • Python 图片转数组,二进制互转操作

    这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • Python中的imread()函数用法说明

    这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • python实现b站直播自动发送弹幕功能

    这篇文章主要介绍了python如何实现b站直播自动发送弹幕,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下...2021-02-20
  • python Matplotlib基础--如何添加文本和标注

    这篇文章主要介绍了python Matplotlib基础--如何添加文本和标注,帮助大家更好的利用Matplotlib绘制图表,感兴趣的朋友可以了解下...2021-01-26
  • 如何获取网站icon有哪些可行的方法

    获取网站icon,常用最简单的方法就是通过website/favicon.ico来获取,不过由于很多网站都是在页面里面设置favicon,所以此方法很多情况都不可用。 更好的办法是通过google提供的服务来实现:http://www.google.com/s2/favi...2014-06-07
  • 解决python 使用openpyxl读写大文件的坑

    这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
  • python 计算方位角实例(根据两点的坐标计算)

    今天小编就为大家分享一篇python 计算方位角实例(根据两点的坐标计算),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-27
  • python实现双色球随机选号

    这篇文章主要为大家详细介绍了python实现双色球随机选号,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-05-02
  • python中使用np.delete()的实例方法

    在本篇文章里小编给大家整理的是一篇关于python中使用np.delete()的实例方法,对此有兴趣的朋友们可以学习参考下。...2021-02-01
  • 使用Python的pencolor函数实现渐变色功能

    这篇文章主要介绍了使用Python的pencolor函数实现渐变色功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-09
  • python自动化办公操作PPT的实现

    这篇文章主要介绍了python自动化办公操作PPT的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-05
  • Python getsizeof()和getsize()区分详解

    这篇文章主要介绍了Python getsizeof()和getsize()区分详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-20
  • 解决python 两个时间戳相减出现结果错误的问题

    这篇文章主要介绍了解决python 两个时间戳相减出现结果错误的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-12
  • python实现学生通讯录管理系统

    这篇文章主要为大家详细介绍了python实现学生通讯录管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-25
  • PyTorch一小时掌握之迁移学习篇

    这篇文章主要介绍了PyTorch一小时掌握之迁移学习篇,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-08