找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 1726|回复: 1

[求助] 在笔趣阁上爬取小说,大佬们能看一下我哪里出问题了吗

1

主题

1

帖子

1

积分

贫民

积分
1
sjl学py 发表于 2021-10-21 17:58:59 | 显示全部楼层 |阅读模式
import asyncio
import aiohttp
import requests
from lxml import etree
import aiofiles
# 主函数
title_url = 'https://www.bbiquge.net/book_97146/'
def main():
    resp = requests.get(title_url)
    resp.encoding = 'gbk'
    tree = etree.HTML(resp.text)
    href_list = tree.xpath("/html/body/div[4]/dl/dd/a/@href")
    asyncio.run(get_url(href_list))

# 请求网页的函数
async def get_url(href_list):
    tasks = []
    for href in href_list:
        content_url = 'https://www.bbiquge.net/book_97146/' + str(href)
        tasks.append(asyncio.create_task(download(content_url)))
    await asyncio.wait(tasks)

# 下载数据的函数
async def download(content_url):

    async with aiohttp.ClientSession() as session:
        async with session.get(content_url) as resp:
            content_text = await resp.text()
            tree = etree.HTML(content_text)
            content_list = tree.xpath('/html/body/div[3]/div[2]/div[1]/text()')
            for content in content_list:
                print(content)
                async with aiofiles.open('元尊.txt',mode='w',encoding='gbk') as f:
                    await f.write(content)
if __name__ == '__main__':
    main()
回复

使用道具 举报

1

主题

9

帖子

9

积分

贫民

积分
9
天降天使 发表于 2021-10-27 12:13:36 | 显示全部楼层
asyncio.run(get_url(href_list))这里有问题,因为操作系统对文件的打开数是有限制的,这里href_list链接数太多一下都填加到任务,超过了系统限制,所以会报错,控制数量即可。
回复 支持 反对

使用道具 举报

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

本版积分规则

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