python项目-爬取妹子图

最近在学爬虫,写了一个爬取妹子图片

功能:自动下载妹子图,并自动命名

网址:http://www.netbian.com/meinv/

#!/usr/bin/env python 
# -*- coding:utf-8 -*-
# 爬取妹子图
# url:http://www.netbian.com/meinv/
# http://www.netbian.com/meinv/index_2.htm
import urllib.request
import urllib.parse
from bs4 import BeautifulSoup
import re


def main():
    # 输入网址得到服务器返回的数据
    allurl()
    # 解析数据得到图片链接和图片名称
    # 保存图片到本地,图名做相应修改


# 图片链接格式
findImg = re.compile(r'src="(.*?)"', re.S)
# 图片名称格式
findName = re.compile(r"<b>(.*?)</b>", re.S)


def findurl(url):
    """一个网页的爬取(后面用for爬取所有网页)"""
    # head伪装
    headers = {
        'User-Agent': "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) "
                      "Chrome/78.0.3904.108 Safari/537.36"}

    req = urllib.request.Request(url=url, headers=headers)  # 发送信息的预处理
    response = urllib.request.urlopen(req)  # 得到整个网页
    # 读取网页并解码
    html = response.read().decode(encoding='gb18030')  # 使用'utf-8'无法解码,换为'gb18030'
    return html


def allurl():
    """循环爬取所有网页"""

    for i in range(3):
        url = "http://www.netbian.com/meinv/index_"+str(i+2)+".htm"
        html = findurl(url)  # 获取一个网页
        # print(html)   # 测试:是否获取到网页

        # 解析数据得到图片链接和图片名称
        bs = BeautifulSoup(html, "html.parser")  # 将网页解析为树形
        t_list = bs.select("li>a")  # 找到标签li中的所有子标签a,做成列表
        t_list = t_list[-17:-1]
        # print(t_list)     # 测试:当前网页所有妹子图放入列表(每页17个)
        # 对每个妹子进行正则表达式提取(链接及名称)
        for item in t_list:
            item = str(item)  # 正则表达式是对字符串操作,所以先转化为字符串
            # 提取图片名
            name = re.findall(findName, item)
            # 提取链接,并下载
            img = re.findall(findImg, item)
            savejpg(name, img)


def imgurl(url):
    """获取图片链接下载图片"""
    # head伪装
    headers = {
        'User-Agent': "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) "
                      "Chrome/78.0.3904.108 Safari/537.36"}
    req = urllib.request.Request(url=url, headers=headers)  # 发送信息的预处理
    response = urllib.request.urlopen(req)  # 得到图片链接
    # 二进制形式读取链接
    html = response.read()
    return html


def savejpg(name, img):
    """得到名字和链接存储图片"""
    # print(name, img)  # 测试:输出图名及对应链接
    meizi = imgurl(img[0])     # 获取图片链接

    with open('D:\FishC\项目\爬取妹子图\爬取妹子的结果\{0}.jpg'.format(name[0]), 'wb') as f:
        f.write(meizi)


if __name__ == '__main__':
    # 主函数
    main()

爬取结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_40960364/article/details/106227710
今日推荐