使用正则、协程多任务爬取虎牙海量美女图片,斗鱼也一样,只需将正则表达式中的内容换一下即可,由于斗鱼网站的变化,之前的正则已用不了,现贴出新的:
re.findall(r"https://[^(\s|\"|})]*?\.jpg",url_content)
1.首先打开百度搜索虎牙,进入虎牙官网:

点击颜值选项进入都是妹子的界面:

2.鼠标单击右键,选择查看网页源码,如下:

3.ctrl+A全选,ctrl+C复制,在桌面新建文本文档打开,选择粘贴,ctrl+S保存,最后对该文件重命名,将后缀名改为html,将该文件复制到你的项目中就OK了。
# 多任务实现下载图片
import urllib.request
import gevent
import re
from gevent import monkey
monkey.patch_all() # gevent打补丁
# 图片下载操作
def download(img_name, img_url):
req = urllib.request.urlopen(img_url)
img_content = req.read()
# 将文件放在项目下的pictures文件夹下
with open("pictures/%s" % img_name, "wb") as f:
f.write(img_content)
def main():
# 读取网页中的源码内容,meinv.html是beauties网页的源码内容,我把它放在了我项目下面
with open("meinv.html", "r", encoding='utf-8') as f:
url_content = f.read()
# 使用正则过滤出beauties图片的网址,保存到img_li列表中
img_li = re.findall(r"https://huya.*?\.jpg", url_content)
print(len(img_li)) # 打印出列表长度
j = 0
li = list() #创建一个空列表
#创建所有的卵,添加到li列表中
for i in img_li:
spawn = gevent.spawn(download, str(j) + ".jpg", i)
li.append(spawn)
j += 1
gevent.joinall(li) #将所有的卵放入joinall中实现多任务下载
if __name__ == '__main__':
main()
多任务下载最明显的效果是爬取的所有图片在一瞬间同时出来 ,爬取后的效果:

772

被折叠的 条评论
为什么被折叠?



