【python】爬取小说网站文章

利用Python爬取小说(附源码) Python爬取网络小说,不用再为了看小说没有会员而烦恼! 阅读详情

背景:

之前发了一篇收集素材的,现在来一篇收集素材来源的,因为代码较为简单,为了防止报错导致重新爬取,故这里把爬取数据列表和数据内容分开。(爬取的数据仅用于学习,切勿商业)

 

代码(获取列表):

import requests,time
from bs4 import BeautifulSoup

def get_one_page(url):
  headers = {
      'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 '
                   'Safari/537.36 '
  }
  requests.packages.urllib3.disable_warnings()  #避免出现警告信息
  response = requests.get(url,headers=headers,verify=False)

  if response.status_code == 200:     #根据状态码判断是否访问成功
      response.encoding = response.apparent_encoding
      return response.text
  return None

def getList(soup):
    pattern = soup.find('div', {'id': 'newscontent'})
    pattern = pattern.find('ul')
    list = pattern.find_all("span", {"class":{"s2"}});
    result = [];
    for span in list:
        tagA = span.find('a');
        result.append("【"+tagA.get_text()+"】 "+tagA['href'])
    write(result);



def write(result):
    with open('data.txt','a',encoding='utf-8') as f:  # 设置文件对象
        for index, word in enumerate(result):
            print(word)
            f.write('\n'+word)


listUrl = 'http://www.biquge.info/list/6_1.html';
if __name__ == '__main__':
    html = get_one_page(listUrl)
    soup = BeautifulSoup(html, 'lxml')
    #获取分页
    pagelink = soup.find('div', {'id': 'pagelink'})
    last = pagelink.find("a",{"class":"last"}).get_text();

    for pageIndex in range(int(last)):
        html = 'http://www.biquge.info/list/6_'+str(pageIndex+1)+".html";
        html = get_one_page(html)
        soup = BeautifulSoup(html, 'lxml')
        print('当前是第'+str(pageIndex+1)+'页');
        getList(soup);
        time.sleep(3)

控制台效果:

 txt效果:

 

 

爬取完列表后,便开始爬取具体内容:

代码(内容):

import requests,time,re
from bs4 import BeautifulSoup
import bs4




def get_one_page(url):
  headers = {
      'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 '
                   'Safari/537.36 '
  }
  requests.packages.urllib3.disable_warnings()  #避免出现警告信息
  response = requests.get(url,headers=headers,verify=False)

  if response.status_code == 200:     #根据状态码判断是否访问成功
      response.encoding = response.apparent_encoding
      return response.text
  return None


def parse_one_page(html):
  soup = BeautifulSoup(html,'lxml')
  chapter_name = soup.h1.string
  pattern = soup.find('div',{'id':'content'})
  next_url = re.search("<a.*?上一章.*?(章节目录|章节列表).*?a href=\"(.*?)\">下一章.*?报错欠更</a>", html, re.S).group(2)
  book_list = []   #创建空列表用来存放文本内容
  if chapter_name:
    book_list.append(chapter_name)
  if pattern:
      for br in pattern:
          if isinstance(br,bs4.element.NavigableString):  #文本类型为NavigableString
              # print(br.string)
              if br.string and br.string != 'go' and br.string != 'over':
                 book_list.append(br.string)
  # print(book_list)
  print(chapter_name,' 已经完成下载',' 下一章节:',next_url)
  return book_list,next_url




def write(result):
    with open('data.txt','a',encoding='utf-8') as f:  # 设置文件对象
        for index, word in enumerate(result):
            print(word)
            f.write('\n'+word)


fileNameList = [];
def read():
    with open('data.txt','r',encoding='utf-8') as f:  # 设置文件对象
        for line in f.readlines():
            line = line.strip('\n')  #去掉列表中每一个元素的换行符
            line = re.search(r'【.*】',line)
            if line and title:
                title = line.group()
                title = re.sub(r"(【|】)",'',title)
                fileNameList.append(title);


def getContent(bookUrl,url,fileName):
    start = time.clock()
    print('开始下载,请等待...')
    while True:
        num = 0
        while True:
            html = get_one_page(url)
            num = num + 1;
            if num>10 or html!=None:
                break;
        content, next_url = parse_one_page(html)
        with open('doc/'+fileName+'.txt', 'a+', encoding='utf-8') as f:
            for i in content:
                f.write(i)
        url = next_url
        if url == bookUrl:
            break
    print('下载已完成')
    end = time.clock()
    print('Running time:%.4s Seconds' % (end - start))
    time.sleep(2)

def getFileList():
    fileList = [];
    with open('data.txt', 'r', encoding='utf-8') as f:  # 设置文件对象
        for line in f.readlines():
            line = line.strip('\n')  # 去掉列表中每一个元素的换行符
            if line:
                fileList.append(line)
        return fileList


if __name__ == '__main__':
    fileList = getFileList();
    for file in fileList:
        link = re.search(r'http(.*)', file)
        title = re.search(r'【.*】', file)
        if link:
            title = title.group()
            link = link.group()
            html = get_one_page(link)
            soup = BeautifulSoup(html, 'lxml')
            pattern = soup.find('div', {'id': 'list'})
            pattern = pattern.find('a');
            a = pattern['href']
            newHref = link+a;
            print(title)
            getContent(link,newHref,title)


 

效果(控制台):

 

txt效果:

爬取多本小说 目标网站 笔趣阁全部小说栏的小说 网址:http://www.xbiquge.la/xiaoshuodaquan/ 页面解析 爬取流程: 1. 请求网站拿到数据,抽取小说名创建文件夹,抽取小说链接 解析网页发现,所有的书和其连接都是在相同在相同的标签下,极大的降低了我们爬取不同类别小说的难度,爬取书名以后需要将书名作为文件名,以便于之后本书章节的存储。 实现代码如下: def start_... 阅读详情

相关推荐

python3爬虫记(一)------------------利用 requests 和 lxml 爬取小说

PS 本人第一次写博客,写的不好和不对的地方请见谅,欢迎各位指出。最近在学python的爬虫,所以想试试爬取一下啊小说,废话不多说,直接搞起。首先百度一下小说,例如“牧神记”吧直接进入到第一个“幻月书院”1.一般我们在爬取可以先去看看网站的 robots.txt 文件 例如“幻月书店”的,输入http://www.huanyue123.com/robots.txt 即可。得到一下内容User-ag...

NNDLGZT的博客 8931

使用python爬取小说

【代码】使用python爬取小说。

2303_81782041的博客 401

语音识别(ASR)-- Kaldi 学习笔记

语音识别(ASR)-- Kaldi学习笔记语音识别简介GMM-HMM基本原理DNN-HMM(基于神经网络)KaldiKaldi架构简介Kaldi在Windows下的安装工具准备编译OpenFST配置PortAudio配置KaldiKaldi目录说明 语音识别简介 语音识别(Speech Recognition)技术,也被称为自动语音识别(Automatic Speech Recognition, ASR)、计算机语音识别(Computer Speech Recognition)或是语音转文本识别(Spee

qq_43318971的博客 4847

python爬虫爬取小说网站

能看见光的人</a><a href="/search/%E5%BF%B5%E9%95%BF%E7%B4%A0.html" target="_blank">念长素</a><a href="/search/%E5%BF%B5%E9%95%BF%E7%B4%A0.html" target="_blank">念长素

weixin_55010563的博客 2948

计数译码驱动显示电路实验报告_京东方G0A电路、阵列基板、显示 装置及驱动方法广州威彩...

图1、实施例二所述的选择子单元的结构示意图图2、实施例四所述的GOA电路结构示意图图3、实施例七所述的阵列基板的局部结构示意图图4、实施例所述的极性反转驱动方法的第一场的各信号时序图图5、实施例所述的极性反转驱动方法的第二场的各信号时序图图6、实施例所述的极性反转驱动方法的第三场的各信号时序图图7、实施例所述的极性反转驱动方法的第四场的各信号时序图图8、为图4所示时序下,实施例八所述显示...

weixin_35696112的博客 924

python调用海康工业相机并用opencv显示(整体实现)

python语言调用海康机器人(hikrobotics)工业相机 第一章 Python 语言下连接海康工业相机,并获取数据 文章目录 系列文章目录 前言 目录 python语言调用海康机器人(hikrobotics)工业相机 文章目录 前言 一、底层接口的准备 二、使用步骤 1.引入库 2.枚举设备 3.判断设备类型 4.输入连接设备 5.创建相机实例并创建句柄 6.打开设备 7.获取相关参数 8.主动获取图像 9.开启取流并获取每张.

qq_39570716的博客 5万+

Python 爬虫入门:爬取免费小说 + 高清壁纸 + 网页数据(三合一实战)

很多同学刚学 Python,都想试试爬虫能做什么。本文用最基础的爬取简单网页文本批量下载高清壁纸爬取公开免费小说章节全程小白友好,代码可直接运行,适合入门练手。网页文本提取图片批量下载小说内容爬取基础反爬处理请求 → 解析 → 提取 → 保存多页爬取(翻页爬虫)登录态爬取动态页面爬取Scrapy 框架。

2401_84289488的博客 920

最大似然估计、梯度下降、EM算法、坐标上升

主要讲解的是机器学习中参数学习算法之间的区别,以及应用的场景。 最大似然估计: 其中目标函数是对数似然函数。为了求目标函数取最大值时的theta。有两个关机键步骤,第一个是对目标函数进行求导,第二个是另导数等于0,求解后直接得到最优theta。两个步骤缺一不可。 梯度下降: 对目标函数进行求导,利用导函数提供的梯度信息,使参数往梯度下降最快的方向移动一小步,来更新参数。为什

tzl2093的博客 5141

初学者-Python 网页爬取小说

找到想看的小说的网站地址→爬取小说所有章节的网站地址→爬取每章小说的标题和内容→把内容保存到TXT文件确定小说的网站地址。python...

a7568712的博客 1万+

从零到一:RF-DETR如何通过神经架构搜索重塑实时目标检测的边界

RF-DETR通过创新的权重共享神经架构搜索(NAS)机制,重新定义了实时目标检测的技术边界。这项技术在COCO等基准测试中表现卓越,成为首个AP超过60的实时检测器,同时保持跨领域稳定性和高效推理速度。RF-DETR的动态架构调整能力使其能够适应从嵌入式设备到云端服务器的各种硬件环境,为工业质检、自动驾驶等场景提供灵活解决方案。

weixin_29061531的博客 468

TCMSP数据库+R语言实战:从网页爬虫到中药-靶点网络图的全流程解析

本文详细解析了如何使用R语言从TCMSP数据库抓取中药-靶点数据,并通过数据清洗、网络分析和可视化构建完整的中药作用机制研究流程。涵盖动态网页爬虫、ADME参数筛选、网络图构建及高级可视化技巧,为中医药现代化研究提供实用的生物信息学方法。

weixin_31304817的博客 336

python爬虫,以某小说网站为例

以小说网站为例的python简单爬虫。

a417655340的博客 2202

【原创,解决CLodop安装后无法调用的问题】已经安装过CLodop,但是网页上仍然提示“clodop云打印服务(localhost本地)未安装启动,点击这里执行安装....”

在某些国内web网站中,需要安装一个名为“CLodop”的插件;但在实际使用过程中,即使安装了CLodop插件,网页试图调用它时还是会提示“clodop云打印服务(localhost本地)未安装启动,点击这里执行安装...”,且无法完成相关打印任务 本文属原创博客,分析了解决CLodop无法被调用的问题,并附上了原理和解决方法,本质上是和跨域请求以及CORS类安全组策略相关

link_in_csdn的博客 2万+

使用Python爬取小说

爬取网站:http://www.biqugecom.com/ 爬取方式:整站爬取,就是把该站所有的小说都爬下来。 本次爬取涉及到的知识点有: Xpath 类的定义及使用 requests库的使用 准备工作 安装requests库: pip3 install requests 安装lxml库: pip3 install lxml 分析网站: 得到每个分类的页面的链接只有...

洋洋的博客 1万+

深入C++学习还必须掌握的一基础知识精讲

施磊C++语言基础提高课程笔记,包括了new/delete;malloc/free;引用和指针;const,指计和引用的结合;函数重载,inline的数,参数带默认值的函数;函数模板等知识点

GeniusAng的博客 1477

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

从一个普通电子书网爬取小说

相比爬取晋江,爬取不收fei小说网站往往更简单,因为有上一篇很详细地描述了爬取步骤,这一篇就重复写了,想看具体过程可以看上一篇。

weixin_42292586的博客 797

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Python爬虫练习笔记——爬取一本小说并保存为txt文件

最近竟然开始磕起了黄晓明和尹正的CP!!! 但是万恶的爱某艺不好好更新剧集,居然搞起了超前点映… WTF???有什么是我这个贫穷而又尊贵的VIP用户不能看的??? 于是我决定开始看小说了!找个网站把小说爬下来慢慢看吧~ 先物色一个投缘的小说网站吧 就它了! 第一步:分析网页 首先需要了解要爬取网站的页面,查看网页源代码。然后根据网页源代码的结构,想好代码的步骤和思路。 在网页开发者模式中查看...

sinat_34937826的博客 1万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

python爬虫之爬取网站小说,获取一部小说

python爬虫之爬取网站小说,由于学习没多久,许多小细节还不是很理解清楚,在大佬的帮助下,完成了这篇。 代码仅作参考: ''' 函数式编程 纵横中文网爬取阴阳酒馆小说 ''' # 导入第三方库 import requests from lxml import etree import time import os from fake_useragent import UserAgent ua ...

qq_46292926的博客 631

python3.6爬虫案例:爬取顶点小说(爱看小说同学的福利)

一、写在前面  这次本来打算爬百思不得姐视频的,谁料赶上此网站调整,视频专栏下线了,网站中也没有视频可爬。所幸先来说说如何爬取顶点小说吧。  顶点小说(https://www.x23us.com)里面的内容很丰富,不过我们要爬的话最好爬已经完结的全本小说(https://www.x23us.com/quanben/)。爬完我们可以直接将.txt文件放入手机看,很过瘾的哦。(本篇博客由于内容丰富,篇...

JiShun_Wang的博客 9910

python最小白的爬虫~爬取豆瓣小说

爬取豆瓣小说图片,并以标题命名该图片 # Author:li import re import requests headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.33 Safari/537...

weixin_34174105的博客 366

python爬取小说网站资源,爬虫基础-1-爬取小说资源

-------谢谢您的参考,如有疑问,欢迎交流使用BeautifulSoup爬取网站资源注:此文仅供学习参考,如果该网站平凡文学负责人有异议,请留言,作者将删除此文章有关平凡文学的所有信息.BeautifulSoup简介:我的理解:BeautifulSoup就是用来解析Html的模块,详细信息还请参考BeautifulSoup4.2.0 中文文档随便找了一个小说网站,没有爬取文章内容,主要是理解一...

weixin_39996750的博客 275

Python爬取小说

Python爬取小说 这里主要爬取笔趣阁的链接 因为笔趣阁对段时间的爬取次数做了限制,所以每次我们只能爬取十章 # coding:utf-8 import re import soup as soup from bs4 import BeautifulSoup import requests import chardet i=0 # #限定每行字数 def cut_text(text,len...

weixin_41355677的博客 307

使用requests+BeautifulSoup爬取龙族V小说

这几天想看龙族最新版本,但是搜索半天发现 没有网站提供 下载, 我又只想下载后离线阅读(写代码已经很费眼睛了)。无奈只有自己 爬取了。 这里记录一下,以后想看时,直接运行脚本 下载小说。 这里是从http://longzu5.co 这个网站下载的小说,如果需要更改存储路径,可以更改FILE_URL 常量的值 如果 爬取不到了,说明,此网站做了防爬虫,或者 其渲染 网页的 html 元素...

weixin_33725515的博客 648

python爬取小说写入txt_Python爬虫爬取小说,并保存至本地文本文件中

运行环境:Python3.6、Pycharm2017.3、Windows10 RS3、requests2.18.4、BeautifulSoup4.6.0简介运行效果展示① book136_singleprocess.py单进程保存小说章节#!/usr/bin/env python# -*- coding: utf-8 -*-# @Author : Woolei# @File : book136_s...

weixin_39870199的博客 1142

Python爬虫:爬取小说,支持多线程和导入读书软件

   还记得今天是2022年6月10日的上午,只因为昨晚无意间看到一篇小说《那年那蝉那把剑》,顿时就作者的文笔给吸引了,一口气就看了50章,可惜好日子不长久。之后就居然开始收费了,作为一名IT从业者,我深知技术自由的重要性,于是便有了这篇文章。最终实现的效果如下:可选背景、可选章节、可调字体几乎与付费的 效果一样。目标网站:新笔趣阁:#https:#//www.#xbiq#uge.la/ 把#号去掉 =    第一个是User-Agent浏览器配置,第二个Cookie是用来识别用户的,第三个Host是主

鵬哥的博客 1524

爬取豆瓣小说

import requestsimport timefrom bs4 import BeautifulSoupurl='https://book.douban.com/tag/%E5%B0%8F%E8%AF%B4?start=0&amp;type=T'urls=['https://book.douban.com/tag/%E5%B0%8F%E8%AF%B4?start={}'.format(str...

我的学习日志 708
上一篇: 【python】小说素材收集器
下一篇: 【vue】vue-cli路由操作
gz-郭小敏
博客等级 码龄9年 39粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值