写爬虫,只是为了下小说

调教kimi写一个小说爬虫的全过程 阅读详情

整体思路

spider

大概兴趣是第一生产力吧
网上找的小说现成的txt排版都有问题,缺少章节,不过一些盗版网站章节倒是挺全
本来想着是找到index页,爬取所有章节连接,然后拼接成网址,再进行细节爬取,但是搞了一下发现不知道怎么弄
所以后来就变成了直接从第一章节开始爬,找到标题和正文,用xpath就可以了,然后找到下一章的地址
看着网上一个博客,用的 yield ,我的理解就是一个循环递归吧
因为所有页面都是相同处理的,所以就相当于一个调用,简单粗暴的解决方式,一个函数 process_item(self, item, spider) 就解决了

pipeline

下载下来处理写成html,<h1> 和title,至于content直接带<p>,直接写了就可以
本来还想写目录的主体<li>之类的
还好还好calibre够强大,可以识别不规则的html,也可以自动生成目录,所以免去了很多步骤
设置了一个global,用来生成文件名的,从1开始递增,所以保证文件每一章节是顺序的


四个文件

item.py

# -*- coding: utf-8 -*-
# Define here the models for your scraped items
#
# See documentation in:
# http://doc.scrapy.org/topics/items.html

from scrapy.item import Item, Field

class NoveldownloadItem(Item):
    # define the fields for your item here like:
    # name = Field()
    title = Field() # title 
    content = Field() #content
    pass

setting.py

# -*- coding: utf-8 -*-
# Scrapy settings for noveldownload project
#
# For simplicity, this file contains only the most important settings by
# default. All the other settings are documented here:
#
#     http://doc.scrapy.org/topics/settings.html
#

BOT_NAME = 'noveldownload'
BOT_VERSION = '1.0'

SPIDER_MODULES = ['noveldownload.spiders']
NEWSPIDER_MODULE = 'noveldownload.spiders'
USER_AGENT = '%s/%s' % (BOT_NAME, BOT_VERSION)

DOWNLOAD_DELAY = 0

ITEM_PIPELINES = {
    'noveldownload.pipelines.NoveldownloadPipeline':300,
}


DOWNLOAD_DELAY = 0.2
#RANDOMIZE_DOWNLOAD_DELAY = True


CONCURRENT_ITEMS = 128
CONCURRENT_REQUEST = 64
CONCURRENT_REQUEST_PER_DOMAIN = 64


LOG_ENABLED = False

COOKIES_ENABLES = False

pineline.py

# -*- coding: utf-8 -*-
# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: http://doc.scrapy.org/topics/item-pipeline.html
INDEX = 100

class NoveldownloadPipeline(object):
	

    def process_item(self, item, spider):
    	global INDEX
    	datapath = '../2/'+str(INDEX)+'.html'
    	INDEX +=1
    	#print INDEX
    	fd = open(datapath,'a')
    	line = '<h1> '+ str(item['title']) + ' </h1>\n'+str(item['content'])+'\n'
    	fd.write(line)
    	fd.close
        return item

novel_spider.py

# -*- coding: utf-8 -*-
from scrapy.selector import HtmlXPathSelector
from scrapy.contrib.spiders import CrawlSpider,Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from noveldownload.items import NoveldownloadItem
from scrapy.http import Request

class NovelSpider(CrawlSpider):
    #name="doubanmoive"
    #allowed_domains=["movie.douban.com"]
    #start_urls=["http://movie.douban.com/top250"]
    name="noveldownload"
    allowed_domains=["lwxs520.com"]
    #start_urls=["http://www.xxx.html"]
    start_urls=["http://www.xxxx.html"]
#    rules=[
#        Rule(SgmlLinkExtractor(allow=(r'http://movie.douban.com/top250\?start=\d+.*'))),
#        Rule(SgmlLinkExtractor(allow=(r'http://movie.douban.com/subject/\d+')),callback="parse_item"),      
#    ]
    def parse(self,response):       
        prefix = "http://www.xxx"
        item = NoveldownloadItem()
        sel = HtmlXPathSelector(response)
        title = sel.select('//*[@id="bgdiv"]/table[2]/tbody/tr[1]/td/div/h1/text()').extract()
        # //*[@id="content"]/p
        content = sel.select('//*[@id="content"]/p').extract()
        #print title
        #print content
        item['title'] = title[0].encode('utf-8')
        item['content'] = content[0].encode('utf-8')
        #print item['title']
        #print item['content']      

        yield item

        nexturl = sel.select('//*[@id="thumb"]/a[3]/@href').extract()
        for url in nexturl:
            url = prefix + url
            print url
            yield Request(url, callback=self.parse)


总结

额,配置那里不是很清楚
还有就是不知道是网络问题,还是其他问题
最开始总是爬取10几个网页就开始无法GET,所以只能手动改start_urls 和 global

但是后来把,速度虽然还是有时快有时慢,但是也能几百个不中断了,也不知道原因


另外就是,数据结构啊

返回值是list,或者是什么HtmlXPathSelector 结构,所以要extract() 或者 [0],才能取到正真的值


总之,虽然很粗糙,但是还是完成了下载

并且calibre也做成了mobi的书,而且应该很好调整了,毕竟每个章节都是分开,就算顺序错误或者章节不对也好调整了,并且正在更新的书也很好添加了


不过这个程度太粗糙了,只是简单功能实现


系统动力学仿真软件Vensim下载 Vensim是由美国Ventana Systems, Inc.所开发,是采用图示化编程的方式构建系统动力学模型,上手简单。Vensim有很多系列产品,其中Vensim PLE (Personal Learning Edition)是面向个人学习者的,完全免费,可直接官网下载,截止于2022/04/10,最新的Vensim PLE版本是9.2.3。 阅读详情

相关推荐

告别混乱!在Unity中为Best MQTT v3设计清晰的服务层:配置、连接、订阅发布模块拆分指南

本文详细介绍了如何在Unity中使用Best MQTT v3插件构建清晰的服务层架构,包括配置管理、连接服务、订阅管理和发布服务的模块化拆分。通过解耦设计、事件驱动和接口抽象,提升代码可维护性和可测试性,适用于物联网和实时通信开发场景。

weixin_30576827的博客 357

【免费下载】 fanqie-novel-download:轻松下载番茄小说的Python工具

在数字阅读日益普及的今天,拥有一个能够快速、方便下载小说的工具显得尤为重要。fanqie-novel-download,一个专注于从番茄小说网站下载小说的Python程序,为广大用户提供了极大的便利。 ## 项目介绍 fanqie-novel-download是一款开源的Python程序,旨在帮助用户轻松地从番茄小说网站下载小说。该项目提供了一种简单、高效的方法来保存您喜欢的小说,支持多种格式...

gitblog_00449的博客 2766

从FinFET到NanoSheet:一文看懂TSMC制程技术的架构革命与性能飞跃

本文深入解析了TSMC从FinFET到NanoSheet的制程技术架构革命。FinFET通过三维立体结构解决了短沟道效应,而NanoSheet采用环绕栅极设计,实现了更强的静电控制与设计灵活性,结合EUV光刻技术,共同推动了芯片性能与能效的飞跃,为下一代AI与高性能计算奠定基石。

i3j4k5的博客 288

Novel-Downloader:一键下载200+小说网站的终极离线阅读神器

在数字阅读时代,小说爱好者们常常面临一个共同的困扰:心爱的小说可能随时从网站上消失,或者因为网络问题无法随时阅读。novel-downloader作为一款开源、可扩展的通用型小说下载工具,正是为解决这一痛点而生。这款工具通过智能解析和模块化设计,实现了对200多个小说网站的支持,让用户能够轻松将在线小说转换为本地文件,享受稳定、高效的离线阅读体验。无论你是想要备份珍藏的小说,还是希望在无网络环境下

gitblog_00839的博客 386

高通平台power_supply 框架下添加第三方充电IC的驱动方法

1.power_supply电源框架介绍: power supply framework在kernel/drivers/power/下。内核抽象出来power supply子系统为驱动提供了统一的框架。 功能包括: 1.抽象PSY设备的共性,向用户空间提供统一的API; 2.为底层PSY驱动的编写,提供简单、统一的方式,同时封装并实现公共逻辑。 power supply class位于d...

Change 1万+

脑电分析:为什么大脑信号会“变同步”?——事件相关同步化与去同步化 (ERS/ERD) 全景解析

脑电分析中的事件相关同步化(ERS)和去同步化(ERD)是研究大脑动态节律的重要方法,反映特定任务下脑电频段能量的变化。ERD表示神经元活动分散(功率下降),提示脑区活跃处理信息;ERS则反映神经元同步(功率增强),常与静息状态相关。本文详解了ERS/ERD的生理机制、计算流程(包括基线校正和功率谱分析),并提供了Python实现示例,展示如何通过Welch法和STFT进行时频分析,生成ERD/ERS热力图。该技术广泛应用于运动想象脑机接口、癫痫检测等领域,为理解大脑功能状态提供了量化工具。

qq_32516809的博客 1394

Compose Stability Analyzer Gradle插件使用指南:自动化稳定性验证

Compose Stability Analyzer是一款强大的工具,能够在Android Studio或IntelliJ中实时分析Jetpack Compose可组合函数的稳定性。其Gradle插件提供了自动化的稳定性验证功能,帮助开发者在构建过程中及时发现和解决Compose组件的稳定性问题,从而提升应用性能和用户体验。 ## 为什么需要自动化稳定性验证? Jetpack Compose的

gitblog_00200的博客 909

MT5交易软件系统源码

Manager配置的功能及权限:管理客户、开户,销户、入金、信用额度、修改定单、人工交易报表、设定点差、强制平仓、修改密码,设定持仓交割单或挂单小止盈止损点数;26、修改价格 27、更改K线图历史价格 28、同步历史数据;2、系统设置 3、交易管理 4、交易柜台 5、价格更改 6、多台服。务器联机 7、恢复交易历史 8、数据源调整 9、备份服务调整 10、交易市场设定 11、交易单更改 12、平台时间设定(全世界) 13、可添加商品;15、设置商品利息;独立主机(服务器、VPS、VM)

tutujunjun的博客 904

小说下载器完全使用指南

想要永久保存心仪的网络小说?小说下载器为您提供专业级解决方案!这款可扩展的通用型小说下载工具不仅能实现小说存档和离线阅读,还支持批量下载多平台资源,是每位小说爱好者的必备利器。 ## 3分钟快速上手:零基础安装指南 ### 环境准备与一键安装 首先确保您的浏览器已安装脚本管理器扩展(如Tampermonkey或Violentmonkey)。打开脚本管理器控制面板,选择"新建脚本"选项,将下载器

gitblog_00565的博客 846

深入掌握英飞凌TriCore中断向量表

摘要:本文探讨了英飞凌Tc277芯片中断机制的原理与实现,重点解析了中断向量表基地址的链接文件定义方式、BIV寄存器的初始化过程以及每个中断条目的32字节空间分配规则。通过分析中断向量号(1-255)的计算方法,阐明了中断条目跳转地址(如STM0中断向量号37对应0x800F04A0)的生成逻辑。文章还揭示了.map文件中14字节跳转指令的组成原理,以及最终通过a14寄存器跳转到实际中断函数(如stm0Sr0ISR)的执行流程,为嵌入式开发人员理解中断处理机制提供了清晰的技术路径。

IT技术猿猴的博客 1711

衡山派Luban-Lite系统SDIO无线网络配置实战:以D133CBV-QFN88开发板与RTL8189模组为例

本文详细介绍了在衡山派D133CBV-QFN88开发板上,为Luban-Lite系统配置SDIO无线网络的完整实战流程。通过配置SDMC接口、RTL8189 Wi-Fi驱动、lwIP协议栈及内核参数,并解决编译分区问题,最终实现Wi-Fi网络连接与测试,为嵌入式设备联网提供清晰指导。

weixin_35677363的博客 266

快速上手:novel-downloader小说下载神器完整使用指南

想要永久保存心爱的小说作品,避免因网站关闭或内容下架而遗憾?novel-downloader这款小说下载工具正是您的理想选择,让您轻松构建个人数字图书馆,随时随地畅享阅读乐趣。🎯 ## 为什么选择novel-downloader? ### 解决您的阅读痛点 在数字化阅读时代,您是否遇到过这样的情况:付费购买的小说无法再次阅读,或者追更的作品突然消失?novel-downloader为您提供完

gitblog_00784的博客 1323

RK3568 Android14 移远GNSS卫星导航模组LC760Z GPS北斗定位模块调试

Rockchip RK3568 作为一款高性能、低功耗的国产SoC,被广泛应用于工业网关、车载中控和智能手持终端等领域。在这些应用场景中,位置服务(Location Service) 往往是不可或缺的功能。本文将详细记录如何集成GPS模组到 RK3568 开发板上,通过 UART(串口)接口集成通用的 GPS 模块(如 移远LC760Z 或 EC20 4G 模块自带的 GPS 功能也差不多),并实现数据的解析与上层应用对接。

qq_33427070的博客 1412

爬虫新姿势——使用Chrome Devtools写一个小说爬虫

目前,绝大部分的爬虫教程都是基于Python和Node.js。其实,只要有Chrome浏览器,使用Chrome F12打开的的Devtools就能随时随地轻轻松松写一个爬虫,完全不用装其它语言环境。今天就介绍一下只使用Chrome Devtools来爬取网站www.biqudu.com/31_31729/小说并保存为文本文件的爬虫。打开source标签左侧选择Snippets标签点击New Snippets新建一个Snippets开始写代码点击运行代码查看控制台输出。

WANGWUSAN66的博客 1132

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

python 小说爬虫_零基础写python小说爬虫

分享本帖子分享小说爬虫实现过程,代码有什么问题请各位大神不吝指教1.导包,一般需要这两个包,包的下载方法就不说了,网上都有import requestsfrom bs4 import BeautifulSoup2.跟Java爬虫类似,爬虫的核心就是根据网址获取网页对象def download_page(url):data = requests.get(url).contentreturn data...

weixin_39653405的博客 211

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

python爬虫小说代码示例-Python从零开始写爬虫-4 解析HTML获取小说正文

Python从零开始写爬虫-4 解析HTML获取小说正文在上一节中, 我们已经学会如何获取小说的目录, 这一节我们将学习如何通过正则表达式(在第二节学习过)来获取小说正文.首先, 先随便选择一个章节, 作为例子, 我们就以 "吞噬星空第一章:罗峰"为例子, 来进行我们的学习.首先依然式先获取该网页的源代码import requestsr = requests.get('http...

weixin_37988176的博客 771

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

用python写小说_使用python书写的小说爬虫

#小说的爬取 爬取的是书名的所有列表 根据书名或者作者进行搜索的列表importrequestsimportrandomfrom bs4 importBeautifulSoup#定义一个存储书的列表book_list=[];#定义一个对象存储内容classBook:book_image= '';book_name= '';book_author= '';book_href= '';book_up...

weixin_39710003的博客 234

自己写的一个简单爬虫(爬取一本小说)

import urllib.request import re import random ac = [] #放章节地址 ua = [‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3314.0 Safari/537.36 SE 2.X MetaSr 1.0’,‘Mozi...

qq_39043100的博客 2653

python写个爬小说的小爬虫

安装python; 安装BeautifulSoup 打开window 的命令窗口,输入 $easy_installbeautifulsoup4 或者 $pipinstallbeautifulsoup4 安装html5lib 页面解析器 $apt-getinstallPython-html5lib $easy_installhtml5lib $pipinstal...

七岁 2889

写一个小说爬虫

def catalog_page(): r = requests.get('https://b.faloo.com/f/611691.html') html = etree.HTML(r.text) #这里随便找了本小说 chapter_names = html.xpath('//tbody/tr/td[@class="td_0"]/a[@href]/text()')...

int_i_dont_now的博客 276

python写的有声小说爬虫

querybook.py from bs4 import BeautifulSoup from lxml import html import xml import requests import splider class QuName: def __init__(self,number): self.number = number def getPag...

weixin_30767921的博客 528

用Python3写一个简单的爬小说的爬虫(上)

#下载一个网页 import requests import re url = 'https://www.biquge5200.cc/14_14621/' #模拟浏览器发送http请求 response = requests.get(url) #编码方式response.encoding = 'utf-8',如果下载下来的网页内容有中文乱码现象就需要加上这一句话 #网页源码 html =...

LiebeZQ的博客 712

Python写的一个GUI界面的小说爬虫软件

一个小说的爬虫,带GUI界面的 主要功能 1.多线程提取 可使用代{过}{}过滤理 2. 实时输出过程 3. 一本书的txt文件 使用方法 1. 首先配置好python3环境, 2.新建一个空目录,在此目录下要新建start.py文件,将源码复制在start.py文件内 3. 在此目录下打开 cmd.exe,执行命令 python -m venv 。 4.分别 pip install requests pip install pip install pip install pyinstaller 5.在

m0_59164304的博客 1127

python动物农场小说网站爬虫_分享一个以前写的小说网站爬虫py代码

#1.需要安装的第三方库:requests,bs4importos,requests,refrom time importsleepfrom bs4 importBeautifulSoupfrom random importuniform#网址解析defurl_open(url):headers={}headers["User-Agent"] = "Mozilla/5.0 (Windows NT ...

weixin_39689870的博客 414

用springboot写一个小说爬虫

当然可以。Spring Boot是一个非常强大的框架,提供了许多便利的功能,使您可以快速开发一个小说爬虫。 下面是大致的步骤: 创建一个Spring Boot项目,并在pom.xml中添加对爬虫所需的库,如Jsoup,HttpClient等。 编写爬虫代码,包括发送HTTP请求获取网页内容,解析HTML数据,提取所需的信息(如小说名称,章节,内容)。 将爬取到的信息存储到数据库中,以便之后使...

weixin_42612804的博客 155

用 50 行代码写个听小说的爬虫,以后洗澡也可以听小说了

在路上发现好多人都喜欢用耳机听小说,同事居然可以一整天的带着一只耳机听小说。小编表示非常的震惊。今天就用 Python 下载听小说tingchina.com的音频。

bulingxue1的博客 291
上一篇: request,yield爬取网页
下一篇: single number
github_30830155
博客等级 码龄11年 5粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值