找回密码
  注册[Register]
查看: 308|回复: 8

[python] 笔趣阁小说爬虫下载

[复制链接]
发表于 2022-11-10 20:04 来自手机 | 显示全部楼层 |阅读模式
禁止求评分、诱导评分、互刷评分、互刷悬赏值,违规者封号处理。
禁止发布推广、邀请码、邀请链接、二维码或者有利益相关的任何推广行为。
所有非原创软件请发布在【精品软件区】,发帖必须按照本版块版规格式发帖。

[Python] 纯文本查看 复制代码
# -*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup
import time
 
# 下载链接的前缀,‘944’是《剑来》的地址,想下载其他书可以查看原网页换地址
first_url = 'https://www.bqg99.com/book/944/'
 
basic_url = {
    'whole': None,
    'index': 1
}
 
custom_header = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.35'
}
 
# 下载好的小说
output = 'D:/Data/novel.txt'
 
 
# 更新网页链接
def update_link(url_dict):
    url_dict['whole'] = first_url + str(url_dict['index']) + '.html'
    url_dict['index'] = url_dict['index'] + 1
    print(url_dict['whole'])
    return url_dict
 
 
# 通过GET方法获取网页文本内容
def fetch_text(url_dict, request_header):
    data = requests.get(url=url_dict['whole'], headers=request_header, allow_redirects=False)
    print('status = %d' % data.status_code)
    if data.status_code == 302:
        return None
    else:
        data = BeautifulSoup(data.text, 'lxml')
        article = data.find(name='div', class_='content')
        chapter_topic = article.h1.text
        content_soup = article.find(name='div', id='chaptercontent', class_='Readarea ReadAjax_content')
        content_soup.p.decompose()  # 去掉多余的“上一章”、“下一章”的导航链接
        charter_words = content_soup.stripped_strings
        chapter = {
            'topic': chapter_topic,
            'content': charter_words
        }
 
        return chapter
 
 
def main():
    novel = open(file=output, mode='a+', encoding='utf8')
 
    link = update_link(basic_url)
    text = fetch_text(url_dict=link, request_header=custom_header)
 
    while text is not None:
        novel.write(text['topic'])
        novel.write('\n')
        for line in text['content']:
            line = line
            novel.write(line)
            novel.write('\n')
        novel.write('\n\n')
        time.sleep(1)   # 暂停1秒,防止服务器拒绝,不过这个网站好像没有反爬机制
 
        link = update_link(link)
        text = fetch_text(url_dict=link, request_header=custom_header)
 
    novel.close()
 
 
if __name__ == '__main__':
    main()
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2022-11-10 20:04 | 显示全部楼层
感谢楼主分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-11-10 20:21 | 显示全部楼层
6666666666
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-11-10 20:48 | 显示全部楼层
谢谢大佬
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-11-10 20:50 | 显示全部楼层
谢谢大牛
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-11-10 21:26 | 显示全部楼层
谢谢分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-11-10 21:27 | 显示全部楼层
6666
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-11-10 21:29 | 显示全部楼层
谢谢@Thanks!
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2022-11-10 21:52 | 显示全部楼层
谢谢大佬分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

RSS订阅|手机版|小黑屋|大牛论坛 |我的广告

GMT+8, 2024-5-8 16:55 , Processed in 0.037031 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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