用Python爬取图片

前言
有的时候,我们喜欢去网站浏览一些美图,或者是在平时工作学习中,需要一些好看的图片来作为素材,亦或是无聊的时候想要打发时间,去放松放松,这个时候难道你还在一张一张的点开链接,去浏览吗?我想在这个数据爆发的时代,这样做是不是有点费时间了,下面我们就来看看一波操作!让你一饱眼福…

导入库
导入一些爬虫需要的第三库,是我们爬虫首先的一步:

from bs4 import BeautifulSoup
import requests
import os
import re

这些库,以及后面涉及的一些知识点,我在这里就不一一介绍了,后面我会在《初识爬虫之系列篇》,详细的讲解这些基础知识的,本次就是一个实战篇,让大家了解一些东西,实战篇我会在该专栏里面发布,结构化我的文章,这样自己以后也方便查阅。

找到网址

urlHead = 'https://photo.fengniao.com/'
url = 'https://photo.fengniao.com/pic_43591143.html'

请求网址

def getHtmlurl(url):  # 获取网址
    try:
        r = requests.get(url)
        # 解决解析乱码问题
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return ""

解析并保存

def getpic(html):  # 获取图片地址并下载,再返回下一张图片地址
    # 指定BeautifulSoup的解析器为:html.parser
    soup = BeautifulSoup(html, 'html.parser')
    # all_img = soup.find('div', class_='imgBig').find_all('img')

    all_img = soup.find('a', class_='downPic')
    img_url = all_img['href']

    reg = r'<h3 class="title overOneTxt">(.*?)</h3>'  # r'<a\sclass=".*?"\starget=".*?"\shref=".*?">(.*)</a>'  # 正则表达式
    reg_ques = re.compile(reg)  # 编译一下正则表达式,运行的更快
    image_name = reg_ques.findall(html)  # 匹配正则表达式

    urlNextHtml = soup.find('a', class_='right btn')
    urlNext = urlHead + urlNextHtml['href']

    print('正在下载:' + img_url)
    root = 'E:\Python实验位置\图片\缓存'
    path = root + image_name[0] + '.jpg'
    try:  # 创建或判断路径图片是否存在并下载
        if not os.path.exists(root):
            os.mkdir(root)
        if not os.path.exists(path):
            r = requests.get(img_url)
            with open(path, 'wb') as f:
                f.write(r.content)
                f.close()
                print("图片下载成功")
        else:
            print("文件已存在")
    except:
        print("爬取失败")
    return urlNext

结构化函数

def main():
    html = (getHtmlurl(url))
    print(html)
    return getpic(html)

主函数

# 主函数
# 下载100图片!!!
if __name__ == '__main__':
    for i in range(1, 100):
        url = main()

一般思路
1.请求网址
2.获取网址
3.解析网页
4.保存数据

不要小瞧这些步骤,如果要详细的了解还是需要一些实践的,在现在的爬虫技术里面,有很多需要注意的东西,比如反爬技术,延时,代理,这些都是我们需要了解的,切记不要在网络上随便复制一些代码,自己去运行,这样很有把自己的电脑IP封杀。

下面我们来看看效果如何吧!
在这里插入图片描述
这个代码只要自己去删减一些东西就可以,自己使用了,如果有需要的话,可以留言!
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_47723732/article/details/107784060
今日推荐