48 lines
1.6 KiB
Python
48 lines
1.6 KiB
Python
|
import asyncio
|
|||
|
import re
|
|||
|
|
|||
|
import aiohttp
|
|||
|
import aiofiles
|
|||
|
from bs4 import BeautifulSoup
|
|||
|
import os
|
|||
|
from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor # 多线程/多进程
|
|||
|
|
|||
|
|
|||
|
async def aiodownload(url):
|
|||
|
if not os.path.exists("xs"):
|
|||
|
os.mkdir("xs")
|
|||
|
async with aiohttp.ClientSession() as session:
|
|||
|
async with session.get(url) as response:
|
|||
|
html = BeautifulSoup(await response.read(), "html.parser")
|
|||
|
title = html.find("h1", class_="wap_none").text
|
|||
|
content = html.find("div", id="chaptercontent").text
|
|||
|
if os.name == 'posix':
|
|||
|
name = "xs\\" + title.split(" ")[0] + ".txt"
|
|||
|
elif os.name == 'nt':
|
|||
|
name = "xs/" + title.split(" ")[0] + ".txt"
|
|||
|
content = content.replace(" ", "\n").replace(
|
|||
|
"请收藏本站:https://www.biqg.cc。笔趣阁手机版:https://m.biqg.cc ", "").replace("『点此报错』『加入书签』",
|
|||
|
"")
|
|||
|
async with aiofiles.open(name, "a+") as file:
|
|||
|
await file.write(content)
|
|||
|
|
|||
|
print(title, "成功下载")
|
|||
|
|
|||
|
|
|||
|
async def main(urls):
|
|||
|
takes = []
|
|||
|
for url in urls:
|
|||
|
take = asyncio.create_task(aiodownload(url))
|
|||
|
takes.append(take)
|
|||
|
await asyncio.wait(takes)
|
|||
|
|
|||
|
|
|||
|
if __name__ == "__main__":
|
|||
|
urls = []
|
|||
|
for index in range(1, 2):
|
|||
|
url = f"https://www.biqg.cc/book/3670/{index}.html"
|
|||
|
urls.append(url)
|
|||
|
asyncio.run(main(urls=urls))
|
|||
|
print("全部下载完成")
|
|||
|
|