几行代码下载妹纸图,python requests gevent monkey

实验分析
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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值