urllib和urllib3

urllib和urllib3

一、urllib库

1.1 urllib库所包含的模块

在这里插入图片描述
在这里插入图片描述

1.2 urlopen方法

在这里插入图片描述

1.3 添加请求头

在这里插入图片描述

1.4 cookie操作

在这里插入图片描述

1.5 代理设置

在这里插入图片描述

1.6 response对象

在这里插入图片描述

1.7 urllib.parse模块

在这里插入图片描述
在这里插入图片描述

1.8 urllib.error模块

在这里插入图片描述

1.9 robotparse模块

在这里插入图片描述

二、urllib3库

2.1 简介

在这里插入图片描述

2.2 构造请求

在这里插入图片描述

2.3 response属性

在这里插入图片描述

2.4 json数据解析

在这里插入图片描述

2.5 大数据处理

在这里插入图片描述

2.6 代理

在这里插入图片描述

2.7 request参数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、爬虫开发的基本流程

在这里插入图片描述

四、练习

在这里插入图片描述

import urllib3
import re
import os
# 构造请求
http = urllib3.PoolManager()
url_list = ["http://www.weimeitupian.com", "http://www.weimeitupian.com/page/2", "http://www.weimeitupian.com/page/3"]
for i in range(len(url_list)):
    res = http.request("GET", url_list[i])  # 循环发送请求
    res_str = res.data.decode()  # 将响应的数据解码
    print("正在下载第{}页的数据".format(i+1))
    # 匹配创建文件夹时所需要的文本并筛选出所需要的文本
    dir_name = re.findall(r'title="(.+?)"', res_str, re.S)[9:-10]
    # 匹配每个图片的url并筛选出所需要的url
    img_url = re.findall(r'<!--<img src="(.+?)"', res_str, re.S)[:45]
    # print(dir_name, len(dir_name))
    # print(img_url, len(img_url))
    for i in range(len(img_url)):
        try:
            res_img = http.request("GET", img_url[i])
            # res_img = http.request("GET", img_url[i], preload_content=False)  # 分段存储必须要带上preload_content=False
        except Exception as e:
            print("url出错!", e)
            res_img = http.request("GET", "http://www.weimeitupian.com"+img_url[i])
            # res_img = http.request("GET", "http://www.weimeitupian.com" + img_url[i], preload_content=False)
        # 拼接一个路径,用来创建文件夹
        dir_path = os.path.join(r"D:\Python学院学习环境\pachong\img", dir_name[i])
        # 判断该路径是否存在,不存在则创建
        if not os.path.exists(dir_path):
            os.mkdir(dir_path)
        # 拼接一个文件路径
        file_path = os.path.join(dir_path, "{}".format(img_url[i].split("/")[-1]))
        with open(file_path, "wb")as f:
            print("正在下载第{}条数据".format(i+1))
            f.write(res_img.data)
            # for chunk in res_img.stream(32):  # 分段写入,每次写入32个字节
            #     f.write(chunk)

效果图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值