Python爬虫之爬网页图片

首先确认已经安装Python

安装requests库

pip install requests

# Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。

# 它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。

# Requests 的哲学是以 PEP 20 的习语为中心开发的,所以它比 urllib 更加 Pythoner。更重要的一点是它支持 Python3 哦!

# 关于requests  http://docs.python-requests.org/zh_CN/latest/user/quickstart.html

import requests

import os

#

# 通过url打开链接

#

def url_open(url):

    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:55.0) Gecko/20100101 Firefox/55.0'}

    return requests.get(url, headers)

#

# 根据url获取总页数

# 注意:此方法只针对http://jandan.net/ooxx/,如果是其他页面,需要重写逻辑

#

def get_page(url):

    html = url_open(url).text

    a = html.find('current-comment-page') + 23

    b = html.find(']', a)

    return html[a:b]

#

# 根据url获取图片列表

#

def find_imgs(url):

    html = url_open(url).text

    img_addrs = []

    a = html.find('img src=')

    while a != -1:

        b = html.find('.jpg', a, a + 255)

        if b != -1:

            img_addrs.append("http:" + html[a + 9:b + 4])

        else:

            b = a + 9

        a = html.find('img src', b)

    return img_addrs

#

# 下载并保存图片至当前目录

#

def save_imgs(img_addrs):

    for each in img_addrs:

        filename = each.split('/')[-1]

        with open(filename, 'wb') as f:

            img = url_open(each).content

            f.write(img)

#

# 入口方法

#

def download_mm(folder="ooxx"):

    if os.path.isdir(folder):

        # os.rmdir(folder)

        print('路径已存在!~ ')

    else:

        # 创建图片保存路径

        os.mkdir(folder)

    # 改变当前工作目录(切换至改目录)

    os.chdir(folder)

    url = "http://jandan.net/ooxx/"

    page_num = int(get_page(url))

    print('页数:', page_num)

    total = 0

    while (page_num != 0):

        page_url = url + 'page-' + str(page_num) + '#comments'

        img_addrs = find_imgs(page_url)

        # 下载保存图片

        save_imgs(img_addrs)

        count = len(img_addrs)

        total += count

        print('第', page_num, '页,共', count, '张', img_addrs)

        page_num -= 1

    print('总共图片:', total, '(张)')

#

# 主入口

#

if __name__ == '__main__':

    download_mm()

你可能感兴趣的:(Python爬虫之爬网页图片)