1. 正常下载漫画,requests 阻塞式。
import requests, bs4, time
import asyncio, aiohttp
def get_image_urls(url):
res = requests.get(url)
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text, 'lxml')
imgs = soup.select('div.list img')
for img in imgs:
yield img.get('data-kksrc')
def download_image(image_url, filename):
res = requests.get(image_url)
res.raise_for_status()
image = res.content
with open(r'e:\path\mh\{}.jpg'.format(filename), 'wb') as fp:
fp.write(image)
if __name__ == '__main__':
site_url = 'https://www.kuaikanmanhua.com/web/comic/105372/'
t_url = 'https://www.kuaikanmanhua.com/web/comic/15559/'
image_urls = [image_url for image_url in get_image_urls(site_url)]
t_list = [image_url for image_url in get_image_urls(t_url)]
image_urls.extend(t_list)
start = time.time()
for filename, url in enumerate(image_urls, start=1):
download_image(url, filename)
print('总计:{:.2f}s'.format(time.time()-start))
2. 异步包 asyncio 基本用法
import asyncio
import time
async def asynct():
print('asyncio...')