鱼C论坛

 找回密码
 立即注册
查看: 1330|回复: 1

[技术交流] Python初级爬虫(利用多任务协程爬取虎牙MM图片)

[复制链接]
发表于 2019-4-16 00:32:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. # coding = utf-8
  2. import re
  3. import gevent
  4. from gevent import monkey, pool
  5. import time, random
  6. import urllib.request

  7. monkey.patch_all()


  8. def downloader_img(img_url, img_name):
  9.     """下载图片"""
  10.     req = urllib.request.urlopen(img_url)
  11.     img_content = req.read()
  12.     # 下载图片保存
  13.     with open(r"/home/python/Desktop/01_Python基础/day03/正则表达式/photo/mm%s" % img_name, "wb") as f:
  14.         f.write(img_content)
  15.         time.sleep(random.random())


  16. def main():
  17.     p1 = pool.Pool(10)  # 加入协程
  18.     # 读取文件
  19.     locals_addr = r"/home/python/Desktop/01_Python基础/day03/正则表达式/1.txt"
  20.     url_txt = open(locals_addr, "r", encoding=" utf-8")
  21.     url_content = url_txt.read()
  22.     jpg_lists = re.findall(r"https://.*?\.jpg", url_content)  # 正则匹配网页的有效地址
  23.     num = 0
  24.     list1 = []  # 定义一个列表用来存网址
  25.     # 遍历图片列表
  26.     for j in jpg_lists:
  27.         list1.append(gevent.spawn(downloader_img, j, "%d.jpg" % num))
  28.         num += 1
  29.     gevent.joinall(list1)


  30. if __name__ == '__main__':
  31.     main()

复制代码

# coding = utf-8
import re
import gevent
from gevent import monkey, pool
import time, random
import urllib.request

monkey.patch_all()


def downloader_img(img_url, img_name):
    """下载图片"""
    req = urllib.request.urlopen(img_url)
    img_content = req.read()
    # 下载图片保存
    with open(r"/home/python/Desktop/01_Python基础/day03/正则表达式/photo/mm%s" % img_name, "wb") as f:
        f.write(img_content)
        time.sleep(random.random())


def main():
    p1 = pool.Pool(10)  # 加入协程
    # 读取文件
    locals_addr = r"/home/python/Desktop/01_Python基础/day03/正则表达式/1.txt"
    url_txt = open(locals_addr, "r", encoding=" utf-8")
    url_content = url_txt.read()
    jpg_lists = re.findall(r"https://.*?\.jpg", url_content)  # 正则匹配网页的有效地址
    num = 0
    list1 = []  # 定义一个列表用来存网址
    # 遍历图片列表
    for j in jpg_lists:
        list1.append(gevent.spawn(downloader_img, j, "%d.jpg" % num))
        num += 1
    gevent.joinall(list1)


if __name__ == '__main__':
    main()
我们需要用一个txt文本保存网页源代码,然后读取里面的数据。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-4-29 22:42:10 | 显示全部楼层
协程 一般不是用 这两个库吗?》
import aiohttp
import asyncio

怎么你的 只是多线程?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 21:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表