爬虫爬取笔趣阁小说

最近闲来无事,想到最近在看的小说能不能用爬虫爬取出来,就试着做了一个爬虫的程序,算是第一次正式地尝试吧。也没花多长时间,结果来看,还算不错。笔趣阁网站有很多,我这里选取的是一个叫做biquge365.net的网站。

import requests
from bs4 import BeautifulSoup
import threading

def fetch_chapter_content(url, title,results):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36'
    }
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')
    content= soup.find('div', class_='txt').text

    results[title]=content

def run_threads(thread_list):
        for thread in thread_list:
            thread.start()
            thread.join()

def get_novel():
    url = 'https://www.biquge365.net/newbook/xxxx/' #这里选取你要的小说
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36'
    }
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')
    chapter_list = soup.find('div', class_='border').find_all('a')

    threads = []
    results = {}
    title_list=[]
    for chapter in chapter_list:
        chapter_url = 'https://www.biquge365.net' + chapter['href']
        chapter_title = chapter['title']
        title_list.append(chapter_title)
        thread = threading.Thread(target=fetch_chapter_content, args=(chapter_url, chapter_title, results))
        threads.append(thread)


    # 每次执行100个线程
    num_threads_per_iteration = 100
    num_threads = len(threads)

    for i in range(0, num_threads, num_threads_per_iteration):
        thread_subset = threads[i:i + num_threads_per_iteration]
        run_threads(thread_subset)

    novel_content=''
    for real_title in title_list:
        novel_content+= f"\n{real_title}\n\n{results[real_title]}\n\n"
    return novel_content

if __name__ == '__main__':
    novel = get_novel()
    with open('E:\\novel.txt', 'w', encoding='utf-8') as file:
        file.write(novel)

    print('小说已保存到novel.txt文件中。')

这里由于一开始爬取时间太长了,因此使用了线程的方法进行爬取。但是线程一次不能太多,要不然服务器会监测到,就会自动断开连接。

最后结果是成功了,就不用傻乎乎地在网上找txt资源了。

Python爬虫用于从网站上抓取数据,包括文本、图片等信息。如果你想爬取笔趣阁这类小说网站的数据,首先需要了解其网页结构,通常这种类型的网站会有分页、章节列表等布局。以下是使用Python爬虫如`requests`库获取HTML内容的大致步骤: 1. **导入所需库**: ```python import requests from bs4 import BeautifulSoup ``` 2. **发送GET请求获取HTML**: ```python url = 'https://www.biquge.com.cn/' # 笔趣阁首页或其他章节页面URL response = requests.get(url) if response.status_code == 200: html_content = response.text else: print("请求失败") ``` 3. **解析HTML内容**: ```python soup = BeautifulSoup(html_content, 'html.parser') # 使用BeautifulSoup解析HTML,提取你需要的信息,如章节链接或标题 chapters = soup.find_all('a', class_='chapter') # 这里的类名假设是获取章节链接的部分 ``` 4. **遍历获取数据**: ```python for chapter in chapters: link = chapter['href'] # 获取每个章节的链接 title = chapter.text.strip() # 获取章节标题 # 对于每个链接,你可以进一步发送请求并处理新的HTML内容 ``` 5. **保存或处理数据**: 将爬取到的数据存储到文件、数据库或进行后续分析。 **注意事项**: - 爬虫应遵守目标网站的robots.txt规则,并尊重版权。 - 频繁的高频率请求可能会导致IP被封禁,所以可以设置合适的延迟或使用代理IP。 - 有些网站有反爬机制,可能需要使用更复杂的解决方案,比如设置User-Agent、模拟登录等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值