用python爬虫下载美女图片_首页

举报
Nikolas 发表于 2020/11/26 20:34:30 2020/11/26
【摘要】 如果我们想要做一个猫狗分类模型,首先我们就要有大量的猫狗图片。我们可以去网上找那些公开的数据集,如果没有,那么我们就要自己去收集这些图片,这个时候爬虫就是一个很好的工具。本文只是做一个教学案例供大家学习使用,切勿用于商业用途!

1.导入依赖包

import re
import os
import time
import random
import requests
from lxml import etree

2.获取网页的url

def get_url(url):
    # 伪造请求头
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'
    }
    # 发送请求
    res = requests.get(url, headers=headers)
    #设置休眠时间
    time.sleep(random.randint(1, 3))
    # 指定编码方式
    res.encoding = 'gbk'
    # 解析网页
    html = etree.HTML(res.text)
    # 对url进行去重
    url_list = set()
    # 提取节点信息
    link = html.xpath('//ul/li[@class="left-list_li"]/a/@href')
    # 将url添加到url列表
    for i in link:
        url_list.add(i)
    link2 = html.xpath('//dl[@class="hot public-box"]/dd/a/@href')
    for j in link2:
        url_list.add(j)
    link3 = html.xpath('//dl[@class="channel public-box"]/dd/a/@href')
    for k in link3:
        url_list.add(k)
    link4 = html.xpath('//ul[@class="column public-box"]/li[@class="column-li"]/a/@href')
    for l in link4:
        url_list.add(l)
    for url in url_list:
        get_img(url)

3.获取图片

def get_img(link):
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'
    }
    print(link)
    res = requests.get(link, headers=headers)
    time.sleep(random.randint(1, 3))
    res.encoding = 'gbk'
    # 从网页提取需要的信息
    page = re.findall('>共(.*?)页<', res.text)[0]
    res = etree.HTML(res.text)
    img_link = res.xpath('//div/a/img/@src')[0]
    name = res.xpath('//div[@class="content"]/h5/text()')[0]
    # 构造url
    base_url = img_link.split('/')
    url = base_url[:-1]
    url = '/'.join(url)
    for i in range(1, int(page) + 1):
        img_link = url + '/' + str(i) + '.jpg'
        save_img(link, img_link, name, i)

4.保存图片

def save_img(link, img_link, name, i):
    headers = {
        'Referer': link,
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'
    }
    img = requests.get(img_link, headers=headers)
    time.sleep(random.randint(1, 3))
    # 如果文件夹不存在则新建
    if not os.path.exists('mnsy'):
        os.mkdir('mnsy')
    # 指定图片保存路径和名称
    path = './mnsy/' + name + str(i) + '.jpg'
    print(path)
    # 如果图片已经保存,则直接跳过该图片
    if os.access(path, os.F_OK):
        print("已经存在")
    else:
        try:
            with open(path, 'wb') as f:
                f.write(img.content)
                print('图片存储成功')
        except:
            print('图片存储失败')
def main():
    # 要爬取的目标网址
    url = 'https://www.mm131.net/'
    get_url(url)
if __name__ == '__main__':
    main()
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。