python 爬取小说并下载的示例

代码

import requests
import time
from tqdm import tqdm
from bs4 import BeautifulSoup

"""
  Author:
    Jack Cui
  Wechat:
    https://mp.weixin.qq.com/s/OCWwRVDFNslIuKyiCVUoTA
"""

def get_content(target):
  req = requests.get(url = target)
  req.encoding = 'utf-8'
  html = req.text
  bf = BeautifulSoup(html, 'lxml')
  texts = bf.find('div', id='content')
  content = texts.text.strip().split('\xa0'*4)
  return content

if __name__ == '__main__':
  server = 'https://www.xsbiquge.com'
  book_name = '诡秘之主.txt'
  target = 'https://www.xsbiquge.com/15_15338/'
  req = requests.get(url = target)
  req.encoding = 'utf-8'
  html = req.text
  chapter_bs = BeautifulSoup(html, 'lxml')
  chapters = chapter_bs.find('div', id='list')
  chapters = chapters.find_all('a')
  for chapter in tqdm(chapters):
    chapter_name = chapter.string
    url = server + chapter.get('href')
    content = get_content(url)
    with open(book_name, 'a', encoding='utf-8') as f:
      f.write(chapter_name)
      f.write('\n')
      f.write('\n'.join(content))
      f.write('\n')

下载效果:

可以看到,小说内容保存到“诡秘之主.txt”中,小说一共 1416 章,下载需要大约 20 分钟,每秒钟大约下载 1 个章节。

下载完成,实际花费了 27 分钟。

20 多分钟下载一本小说,你可能感觉太慢了。想提速,可以使用多进程,大幅提高下载速度。如果使用分布式,甚至可以1秒钟内下载完毕。

但是,我不建议这样做。

我们要做一个友好的爬虫,如果我们去提速,那么我们访问的服务器也会面临更大的压力。

以我们这次下载小说的代码为例,每秒钟下载 1 个章节,服务器承受的压力大约 1qps,意思就是,一秒钟请求一次。

如果我们 1 秒同时下载 1416 个章节,那么服务器将承受大约 1416 qps 的压力,这还是仅仅你发出的并发请求数,再算上其他的用户的请求,并发量可能更多。

如果服务器资源不足,这个并发量足以一瞬间将服务器“打死”,特别是一些小网站,都很脆弱。

过大并发量的爬虫程序,相当于发起了一次 CC 攻击,并不是所有网站都能承受百万级别并发量的。

所以,写爬虫,一定要谨慎,勿给服务器增加过多的压力,满足我们的获取数据的需求,这就够了。

你好,我也好,大家好才是真的好。

以上就是python 爬取小说并下载的示例的详细内容,更多关于python 爬取小说下载的资料请关注我们其它相关文章!

(0)

相关推荐

  • python爬虫爬取笔趣网小说网站过程图解

    首先:文章用到的解析库介绍 BeautifulSoup: Beautiful Soup提供一些简单的.python式的函数用来处理导航.搜索.修改分析树等功能. 它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序. Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码. 你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了.然后,你仅仅

  • Python实现的飞速中文网小说下载脚本

    1.JavaScript 加密什么的最讨厌了 :-( 1).eval 一个不依赖外部变量的函数立即调用很天真,看我 nodejs 来干掉你! 2).HTTP 请求的验证首先尝试 Referer,「小甜饼」没有想像中的那么重要. 3).curl 和各命令行工具处理起文本很顺手呢 4).但是 Python 也没多几行呢 2.Requests效率比 lxml 自己那个好太多 3.progressbar太先进了,我还是自个儿写吧-- 4.argparse写 Python 命令行程序必备啊- 5.stri

  • Python+Wordpress制作小说站

    我用Python和Wordpress建了一个小说站. 下面主要讲一讲搭建过程中所用的技术.主要分为以下几个部分: Wordpress主题的选取 小说内容的完善 站点的部署 微信公众平台的搭建 1.Wordpress主题的选取 由于自己对php代码编写不是非常熟悉,直接编写网站很可能会遇到各种安全漏洞.对比目前比较流行的博客框架wordpress.joomla.drupal,最终还是选择受众比较广的wordpress.之后选取了一套小说模板,就这么上马啦~~ 2.小说内容的完善 2.1 数据的抓取

  • Python实现的爬取小说爬虫功能示例

    本文实例讲述了Python实现的爬取小说爬虫功能.分享给大家供大家参考,具体如下: 想把顶点小说网上的一篇持续更新的小说下下来,就写了一个简单的爬虫,可以爬取爬取各个章节的内容,保存到txt文档中,支持持续更新保存.需要配置一些信息,设置文档保存路径,书名等.写着玩,可能不大规范. # coding=utf-8 import requests from lxml import etree from urllib.parse import urljoin import re import os #

  • Python scrapy爬取小说代码案例详解

    scrapy是目前python使用的最广泛的爬虫框架 架构图如下 解释: Scrapy Engine(引擎): 负责Spider.ItemPipeline.Downloader.Scheduler中间的通讯,信号.数据传递等. Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎. Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Respon

  • Python爬取365好书中小说代码实例

    需要转载的小伙伴转载后请注明转载的地址 需要用到的库 from bs4 import BeautifulSoup import requests import time 365好书链接:http://www.365haoshu.com/ 爬取<我以月夜寄相思>小说 首页进入到目录:http://www.365haoshu.com/Book/Chapter/List.aspx?NovelId=3026 获取小说的每个章节的名称和章节链接 打开浏览器的开发者工具,查找一个章节:如下图,找到第一章的

  • python爬取”顶点小说网“《纯阳剑尊》的示例代码

    爬取"顶点小说网"<纯阳剑尊> 代码 import requests from bs4 import BeautifulSoup # 反爬 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, \ like Gecko) Chrome/70.0.3538.102 Safari/537.36' } # 获得请求 def open_url(url):

  • python实现爬虫抓取小说功能示例【抓取金庸小说】

    本文实例讲述了python实现爬虫抓取小说功能.分享给大家供大家参考,具体如下: # -*- coding: utf-8 -*- from bs4 import BeautifulSoup from urllib import request import re import os,time #访问url,返回html页面 def get_html(url): req = request.Request(url) req.add_header('User-Agent','Mozilla/5.0'

  • Python制作爬虫采集小说

    开发工具:python3.4 操作系统:win8 主要功能:去指定小说网页爬小说目录,按章节保存到本地,并将爬过的网页保存到本地配置文件. 被爬网站:http://www.cishuge.com/ 小说名称:灵棺夜行 代码出处:本人亲自码的 import urllib.request import http.cookiejar import socket import time import re timeout = 20 socket.setdefaulttimeout(timeout) sl

  • Python下载网络小说实例代码

    看网络小说一般会攒上一波,然后导入Kindle里面去看,但是攒的多了,机械的Ctrl+C和Ctrl+V实在是OUT,所以就出现了此文. 其实Python我也是小白,用它的目的主要是它强大文本处理能力和网络支持,以及许多好用的库,不需要自己造轮子.而且真心比C方便啊(真是用了才知道) 分析要获取的网页 我要获取的主要是3个东西: 文章的标题.<div id="title">正文 第一章 北灵院</div> 文章正文内容.<div id="conte

  • 用python给自己做一款小说阅读器过程详解

    前言 前一段时间书荒的时候,在喜马拉雅APP发现一个主播播讲的小说-大王饶命.听起来感觉很好笑,挺有意思的,但是只有前200张是免费的,后面就要收费.一章两毛钱,本来是想要买一下,发现说的进度比较慢而且整本书要1300多张,算了一下,需要200大洋才行,而且等他说完,还不知道要到什么时候去. 所以就找文字版的来读,文字版又有它的缺点,你必须手眼联动才行.如果要忙别的事情,但是又抑制不住想看的冲动,就很纠结了.在网上找了一圈,没有其他的音频.而且以前用的那些有阅读功能的软件,比如微信阅读.追书神器

随机推荐