吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3603|回复: 38
收起左侧

[Python 转载] python爬某网站小说全部章节

 关闭 [复制链接]
男shen 发表于 2022-8-12 22:24
本帖最后由 男shen 于 2022-8-13 11:48 编辑

新手,最近学了一下单线程协程异步下载;顺手写了一个爬小说的,大佬勿喷
运行效果图:

源码:
[Python] 纯文本查看 复制代码
#爬取小说项目 2022年8月11日 21点46分 BY:LX
# 查看页面源代码进行分析,提取内容
# 创建协程,进行异布获取
# 下载保存文件
import asyncio
import aiohttp
import aiofiles
import time,os
import requests
from lxml import etree
def list_all_url(url):  # 获取当前页面全部文章的子链接
    while 10:
        try:
            headers = {
                "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.49"
            }
            html = requests.get(url, headers=headers).text
            tree = etree.HTML(html)
            index_href = tree.xpath("//div[@class='zjbox']//dd/a/@href")  # 小说的链接
            return index_href
        except:
            print("下载出错了,正在重新尝试...", url)
            time.sleep(3)

async def down_one(url):#下载
    while 10:
        try:
            async with aiohttp.ClientSession() as session:
                async with session.get(url,headres = headers) as resp:
                    article_html = await resp.text()
                    tree = etree.HTML(article_html)
                    book_name = tree.xpath("//*[@id='main']/div[1]/span[1]/a[2]/@title")[0]#小说书名
                    book_title = tree.xpath("//*[@id='main']/h1/text()")[0].strip()#小说文章名
                    book_content = "\n".join(tree.xpath("//*[@id='content']/text()")).replace("全本小说网 www.qb5.tw,最快更新","").replace("最新章节!\n","")#文章内容
                    filename = f'{book_name}\\'  # 每个单独按小说名字存放文件夹
                    if not os.path.exists(filename):  # 判断存不存在文件夹
                        os.mkdir(filename)  # 不存在使用mkdir创建文件夹
                    os.startfile(filename)#打开下载目标的文件夹
                    async with aiofiles.open(f"{filename}{book_title}.txt", mode="w",encoding="utf-8")as f:#写入文件
                        await f.write(book_content)
                    break
        except:
            print("下载出错,正在重新请求下载......"+url)
            time.sleep(.2)
    print(book_title,"..........下载完成!")
async def download(index_href):#构造协程函数
    tasks= []
    for href in index_href:
          list_url = f"{kw}"+href # 拼接小说子链接
          t = asyncio.create_task(down_one(list_url))
          tasks.append(t)
    await asyncio.wait(tasks)

def mian():
    url = f"{kw}"  # 小说网址
    index_href = list_all_url(url)  # 传值url
    asyncio.run(download(index_href))  # 运行协程任务

if __name__ == '__main__':
    while 3:
        try:
            kw = input("例如:“ https://www.qb5.tw/book_22016/ ”\n请粘贴此网站要下载的小说网站网址【‘/’斜杠结尾,不然会出错!】【BY:lx】:")
            if not kw =="":
                mian()
            break
        except:
            print("请粘贴网址下载!")

下载地址:https://yunting.lanzoul.com/ixh8W09gh8lc
8.12,顺便更新了一下爬取写真图:


python爬取秀人网美女写真图代码 - 『编程语言区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|[url]www.52pojie.cn[/url]

免费评分

参与人数 6吾爱币 +4 热心值 +6 收起 理由
符家小静 + 1 谢谢@Thanks!
固相膜 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
RippleSky + 1 热心回复!
zhangzsf + 1 + 1 谢谢@Thanks!
kaixianxian + 1 + 1 谢谢@Thanks!
wujl82 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

bj9ye666 发表于 2022-8-13 00:01
python学会它,白嫖天下都不怕
hongwei1112 发表于 2022-8-13 00:13
哈哈,莫想骗我学它,心动了。学这个到你这种程度需要掌握的东西,多不?
iawyxkdn8 发表于 2022-8-13 09:07
直接用书名是不是更好,都打到网址了,那还要这东吗?
Mahone1 发表于 2022-8-13 09:48
while10
while3
这些是什么
qinwang 发表于 2022-8-13 00:11
以后想看小说可以自己爬了
ly201112 发表于 2022-8-13 00:22
可以爬喜欢的小说了!!
我是菜鸟我先灰 发表于 2022-8-13 00:28
哈哈,厉害鸭,不过我只能看懂一点点。
tfrist 发表于 2022-8-13 04:17
给你一个挑战的   看看能下载这里的吗? https://www.qidian.com/
忆江南 发表于 2022-8-13 06:28
tfrist 发表于 2022-8-13 04:17
给你一个挑战的   看看能下载这里的吗? https://www.qidian.com/

这个如果也能下载,那就厉害了。
wycdd 发表于 2022-8-13 07:47
看得我也想学python了
文风 发表于 2022-8-13 07:56
谢谢分享,以后想看小说可以自己爬了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-14 18:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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