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)
效果图