首页 > 编程语言 > 详细

Python爬虫示例

时间:2021-06-22 15:17:14      阅读:13      评论:0      收藏:0      [点我收藏+]
#!/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(1000):
        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:/ImageResult/{0}.jpg".format(name[0]), "wb") as f:
        f.write(meizi)


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


Python爬虫示例

原文:https://www.cnblogs.com/ezhar/p/14918111.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!