本文实例讲述了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 小说爬虫_Python实现的爬取小说爬虫功能示例相关推荐

  1. python爬去百度百科词条_Python爬虫入门学习实践——爬取小说

    本学期开始接触python,python是一种面向对象的.解释型的.通用的.开源的脚本编程语言,我觉得python最大的优点就是简单易用,学习起来比较上手,对代码格式的要求没有那么严格,这种风格使得我 ...

  2. python功能性爬虫案例_Python爬虫实现使用beautifulSoup4爬取名言网功能案例

    本文实例讲述了Python爬虫实现使用beautifulSoup4爬取名言网功能.分享给大家供大家参考,具体如下: 爬取名言网top10标签对应的名言,并存储到mysql中,字段(名言,作者,标签) ...

  3. python爬取小说基本信息_Python爬虫零基础实例---爬取小说吧小说内容到本地

    Python爬虫实例--爬取百度贴吧小说 写在前面本篇文章是我在简书上写的第一篇技术文章,作为一个理科生,能把仅剩的一点文笔拿出来献丑已是不易,希望大家能在指教我的同时给予我一点点鼓励,谢谢. 一.介 ...

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

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

  5. python爬取小说项目概述_Python实现的爬取小说爬虫功能示例

    Python实现的爬取小说爬虫功能示例 发布时间:2020-10-09 03:39:58 来源:脚本之家 阅读:64 作者:阳光Cherry梦 本文实例讲述了Python实现的爬取小说爬虫功能.分享给 ...

  6. python爬虫实例之——多线程爬取小说

    之前写过一篇爬取小说的博客,但是单线程爬取速度太慢了,之前爬取一部小说花了700多秒,1秒两章的速度有点让人难以接受. 所以弄了个多线程的爬虫. 这次的思路和之前的不一样,之前是一章一章的爬,每爬一章 ...

  7. python爬取率_Python实现爬虫爬取NBA数据功能示例

    本文实例讲述了Python实现爬虫爬取NBA数据功能.分享给大家供大家参考,具体如下: 爬取的网站为:stat-nba.com,这里爬取的是NBA2016-2017赛季常规赛至2017年1月7日的数据 ...

  8. Python爬虫之scrapy框架-爬取小说信息

    1.需求分析 我们要得到小说热销榜的数据,每部小说的提取内容为:小说名字.作者.类型.形式.然后将得到的数据存入CSV文件. 2.创建项目 创建一个scrapy爬虫项目方式如下: (1)在D盘下面创建 ...

  9. python爬取小说章节_python之如何爬取一篇小说的第一章内容

    现在网上有很多小说网站,但其实,有一些小说网站是没有自己的资源的,那么这些资源是从哪里来的呢?当然是"偷取"别人的数据咯.现在的问题就是,该怎么去爬取别人的资源呢,这里便从简单的开 ...

最新文章

  1. 手把手实现火爆全网的视频特效 “蚂蚁呀嘿”,太魔性了
  2. 线性规划的原始对偶算法
  3. office 2007 验证失败的解决方法
  4. ThinkPHP3.2.3快速入门 · 看云
  5. 日均互动50万次 微信的营销的成功之道
  6. 如何在linux下启动和关闭oracle服务
  7. 悉数11种主流NoSQL文档型数据库
  8. Win7如何关闭 打开文件-安全警告
  9. 杭电计算机学院大学生程序设计竞赛(2015’11)
  10. linux内存利用率多少合适,如何理解linux服务器中的内存使用率和平均负载
  11. TCP拥塞控制和流量控制
  12. sklearn中的naive bayes算法
  13. RoboCup智能机器人足球教程(四)
  14. u深度重装系统详细教程_u深度重置用户密码操作步骤
  15. AlphaPose(RMPE)区域多人姿态估计理解
  16. 看图工具MassiGra使用指南
  17. Codecademy-中文JavaScript系列教程-Function
  18. BPMN 2.0规范
  19. 我的所有的浏览器被hao123 挟持了,终极解决方案
  20. 智能、精准、节能丨极海APM32F103RCT7 LED车灯应用方案

热门文章

  1. java如何关闭一个线程_如何关闭一个java线程池
  2. javascript V8引擎垃圾收集机制
  3. Eclipse编辑器字体大小的设置
  4. Spring Boot 后台验证 Hibernate Validation
  5. 蒙特卡罗模拟法 —— python
  6. python实例 77,78
  7. 给定4个数字组合的C语言算法,leetcode 454. 四数相加 II c语言
  8. Python基础项目实践之:面向对象方法实现模拟银行管理系统
  9. 错误处理方法 java_JAVA常见错误处理方法 和 JVM内存结构
  10. 32位存储环境下整数范围为什么是[-2^31,2^31-1]?