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

发布时间:2020-10-09 03:39:58

来源:脚本之家

阅读:64

作者:阳光Cherry梦

本文实例讲述了Python实现的爬取小说爬虫功能。分享给大家供大家参考,具体如下:

想把顶点小说网上的一篇持续更新的小说下下来,就写了一个简单的爬虫,可以爬取爬取各个章节的内容,保存到txt文档中,支持持续更新保存。需要配置一些信息,设置文档保存路径,书名等。写着玩,可能不大规范。

# coding=utf-8

import requests

from lxml import etree

from urllib.parse import urljoin

import re

import os

# 获取页面,并返回解析整理好的文本

def get_page(url):

response = requests.get(url, headers=header)

set_encoding(response)

text = parse_page(response.text)

return text

# 解析页面,将当前页面中的文字筛选出来

def parse_page(html):

title = re.findall('

\s+

(.+?)

', html)[0]

content = re.findall('div id="content">(.*?)

', html, re.S)[0]

content = content.replace('
', '').replace(' ', ' ').replace('\r\n\r\n', '\r\n')

content = title + '\r\n' + content + '\r\n\r\n'

return content

# 将文本追加到file_path对应的txt中

def save_page(path, text):

with open(path, 'a', encoding='utf-8') as f:

f.write(text)

# 设置对response得到文本的解析编码为'gbk'

def set_encoding(response):

response.encoding = 'gbk'

# 从配置文件中获取当前保存的链接总数

def get_current_chapters_count(path):

# (1)第一次读配置文件可能没有创建,所以要支持没有文件创建文件的功能(2)如果文件存在,则不能清空,参考https://www.jb51.net/article/158740.htm

with open(path, 'a+') as f:

f.seek(0)

res = f.read()

if res == '':

return 0

else:

return int(res)

# 将保存的链接总数保存到配置文件中

def set_current_chapters_count(path, count):

with open(path, 'w') as f:

f.write(str(count))

# 需要配置的字典

config_dic = dict(start_url='http://www.booktxt.net/2_2220/', # 待下载小说的章节首页

latest_item=9, # 列出的所有章节链接中,前面几个链接为最新章节,一般为9个,爬取时避免与最后部分重复,所以前面9个链接不爬取

bookname='赘婿', # 待下载的小说名

folder_path='D:\\') #保存位置

domain = 'http://www.booktxt.net' # 顶点网域名

if __name__ == '__main__':

chapter_url_list = []

response = requests.get(config_dic['start_url'], headers=header)

set_encoding(response)

html = etree.HTML(response.text)

chapters = html.xpath('//dd')

print('所有链接' + str(len(chapters)))

chapters = chapters[config_dic['latest_item']:] # 前9章为最新章节,后面还会重复,这里去掉

print('不重复有效章节链接' + str(len(chapters)))

folder_path = config_dic['folder_path'] + config_dic['bookname']

if not os.path.exists(folder_path):

os.mkdir(folder_path)

file_path = folder_path + '\\' + config_dic['bookname'] + '.txt'

config_file_path = folder_path + '\\' + 'config.txt'

print('小说存储路径为:' + file_path)

print('配置文件存储路径为:' + config_file_path)

saved_count = get_current_chapters_count(config_file_path) # 获取目前保存的小说中已经包含的章节数

print('当前' + file_path + '中已经保存的章节总数' + str(saved_count))

if saved_count < len(chapters): # 说明有更新

set_current_chapters_count(config_file_path, len(chapters))

print('共更新 ' + str(len(chapters) - saved_count) + ' 章')

for c in chapters[saved_count:]: # 从上次保存的位置开始继续保存

url = c.xpath('a/@href')[0]

url = urljoin(domain, url)

txt = c.xpath('a/text()')[0]

chapter_url_list.append(url)

print(url)

print(txt)

save_page(file_path, get_page(url))

else:

print('小说还没有更新哦')

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

python爬取小说项目概述_Python实现的爬取小说爬虫功能示例相关推荐

  1. python socket模块实现udp通信_Python基于socket模块实现UDP通信功能示例

    Python基于socket模块实现UDP通信功能示例 本文实例讲述了Python基于socket模块实现UDP通信功能.分享给大家供大家参考,具体如下: 一 代码 1.接收端 import sock ...

  2. python爬取小说项目概述_Python实战项目网络爬虫 之 爬取小说吧小说正文

    本次实战项目适合,有一定Python语法知识的小白学员.本人也是根据一些网上的资料,自己摸索编写的内容.有不明白的童鞋,欢迎提问. 目的:爬取百度小说吧中的原创小说<猎奇师>部分小说内容 ...

  3. python爬取小说项目概述_Python爬虫实战——爬取《斗破苍穹》全文小说(基于re模块)...

    目标 思路 手动浏览前几章节,观察url网址变化,以下为前4章节网址: 可以看到,第1和第2章节没有明显规律,第2章节以后规律明显,通过数字递加来分页.手动输入http://www.doupoxs.c ...

  4. 用python编写最简单的记事本_Python使用字典实现的简单记事本功能示例

    本文实例讲述了Python使用字典实现的简单记事本功能.分享给大家供大家参考,具体如下: from time import sleep, strftime user = "Cytus&quo ...

  5. python 自动生成word文档_python实现的生成word文档功能示例

    本文实例讲述了python实现的生成word文档功能.分享给大家供大家参考,具体如下: 每月1次的测试费用报销,需要做一个文档.干脆花点时间写个程序吧. # -*- coding: utf-8 -*- ...

  6. python爬虫抓取文本_Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例...

    本文实例讲述了Python实现可获取网易页面所有文本信息的网易网络爬虫功能.分享给大家供大家参考,具体如下: #coding=utf-8 #------------------------------ ...

  7. python 小说爬虫_Python实现的爬取小说爬虫功能示例

    本文实例讲述了Python实现的爬取小说爬虫功能.分享给大家供大家参考,具体如下: 想把顶点小说网上的一篇持续更新的小说下下来,就写了一个简单的爬虫,可以爬取爬取各个章节的内容,保存到txt文档中,支 ...

  8. python爬取小说功能实现_Python实现的爬取小说爬虫功能示例

    本文实例讲述了Python实现的爬取小说爬虫功能.分享给大家供大家参考,具体如下: 想把顶点小说网上的一篇持续更新的小说下下来,就写了一个简单的爬虫,可以爬取爬取各个章节的内容,保存到txt文档中,支 ...

  9. python提取图片文字视频教学_Python学习第七天之爬虫的学习与使用(爬取文字、图片、 视频)...

    一.爬虫记得基本方法 1.1 爬虫概述 ​网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使 ...

最新文章

  1. Python网络编程(线程通信、GIL、服务器模型)
  2. AI人必看!89页全网最全清华知识图谱报告
  3. 单片机利用蜂鸣器如何输出音乐
  4. 11.18-11.19总结(transform,transition,媒体查询,弹性盒子)
  5. 操作系统课设——吃水果问题
  6. 程序员欢呼:微软Bing开始支持搜索源码、可直接运行
  7. JSON.parse 解析json字符串时,遇换行符报错
  8. static数据的初始化
  9. 我用Python又爬虫了拉钩招聘,给你们看看2019市场行情
  10. Mysql数据库的mysql Schema 究竟有哪些东西 手工注入的基础要领
  11. PHP面试100题汇总
  12. pygame安装教程(小白入手)
  13. cadence破译时显示服务器失败,在服务器开启cadence失败 报错如下
  14. ❤️对比PyWinAuto和uiautomation实现微信联系人自动采集❤️
  15. hello.java_hello java !
  16. 美团外卖订单中心的演进
  17. 拥抱认知革命:区块链时代已至,临渊羡鱼不若自我革新
  18. NYOJ 吃土豆(动态规划)
  19. 基于宽表的数据建模应用
  20. 综合日语第一册第八课

热门文章

  1. 在远程Linux服务器上卸载与安装图形化界面
  2. 有关于集成开发工具IntelliJ IDEA的安装
  3. 卧槽!算法岗又爆了!
  4. Ubuntu20.04 LTS 安装Eclipse2021-03
  5. openharmony容器组件之GridItem
  6. 有大佬知道  淘宝 top  sign怎么算吗(解决了)
  7. android密码输入框提示,Android 密码输入框、验证码输入框,完整版;
  8. 国内慈善事业的现状及存在的问题
  9. 第九章、图形绘制——图形控件和图形方法的应用
  10. 张小龙和张一鸣的对立统一