实验分析
0.用requests从网络获取妹纸图的原网页
1.下载图片,所以需要文件相关的操作
2.想要多任务下载,所以用到协程中的gevent模块–gevent.joinall()
3.因为用到gevent模块,担心有延时操作的话,导入gevent中的monkey模块
4.想要进行网络请求,并读取内容,需要用到 urllib中的request模块
5.想要匹配网页源代码中所有的jpg。需要用到正则表达式— import re
6.因为是匹配所有的jpg,所以可以用re模块中的findall(),它返回一个列表
7.通过设置变量递增和遍历列表,可以知道第n个图片对应第n个图片地址
8.改动了正则表达式,通用性匹配所有的图片地址
所有的分析都已经完成就可以尝试去完成
# -*- coding:utf-8 -*-
"""
@ Author: Coolang
@ Url: http://www.panjinhe.cn
@ Connect: coolang@outlook.com
@ Datetime: 2020/6/19:4:10
@ FileName: c_test_aio_reg_pic_d.py
@ IDE: PyCharm
@ Plan:学习使用monkey
"""
import requests
import gevent
import urllib.request
from gevent import monkey
import re
monkey.patch_all()
def download_img(img_name, img_url):
req = urllib.request.urlopen(img_url, timeout=3) # 设置超时
img_content = req.read()
with open(img_name, "wb")as f:
f.write(img_content)
def main():
"""
with open("pic_d_test.html", "rb") as f:
url_content = f.read().decode("utf-8")
"""
url = 'http://www.zdqx.com/qingchun/index.html'
# 由于已经设置了通配,这个地址可以换成任意的妹纸图地址
response = requests.get(url)
url_content =response.text
#print(url_content)
img_url_list = re.findall('src="//.*?.jpg', url_content)
#print(img_url_list) # 改变正则表达式,以通配jpg图片地址
x = 0
for img_url in set(img_url_list[:-1]):
img_url = "http:" + img_url.split('"')[1]
print('开始下载图片', img_url) # 提示即将下的图片
g1 = gevent.spawn(download_img, "图片/%d.jpg" % x, img_url)
x += 1
gevent.joinall([g1])
if __name__ == '__main__':
main()
"""
Project Note:
修改了部分的文件
"""
————————————————
参考文章链接:https://blog.csdn.net/Mahumd/article/details/89294013