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

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

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

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

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

  4. 用python爬取小说的总结_python如何使爬取的小说更利于观看

    python使爬取的小说更利于观看的方法: 1.使用追加模式将文章写入txt文本 关于文件的写入, 'w' 的方式 是覆盖写, 没有就创建, 那么我们写小说就不需要用这个, 使用 'a' 追加写的模式 ...

  5. 怎么用python爬小说统计词频_python小练习爬取《寻梦环游记》评论并做词频统计...

    本来其实是想爬豆瓣电影上10几万条评论的,但后来ip被封了,换代理ip之类的还不熟练,还在学习中,所以先做时光网上10页评论的分析吧,虽然时光网上粗粗一看评论就短了很多,水了很多.主要是继续练习Bea ...

  6. python爬取b站评论_python高效之爬了B站再爬微博

    全文简介 本文是用Python爬取微博移动端的数据.可以看一下Robots协议.另外尽量不要爬取太快.如果你毫无节制的去爬取别人数据,别人网站当然会反爬越来越严厉.所以,不要难为别人,到最后其实是在难 ...

  7. python爬取微信公众号_python使用webdriver爬取微信公众号

    本文实例为大家分享了python使用webdriver爬取微信公众号的具体代码,供大家参考,具体内容如下 # -*- coding: utf-8 -*- from selenium import we ...

  8. python爬取微博热搜_Python 超简单爬取微博热搜榜数据

    微博的热搜榜对于研究大众的流量有非常大的价值.今天的教程就来说说如何爬取微博的热搜榜.热搜榜的链接是: https://s.weibo.com/top/summary/ 用浏览器浏览,发现在不登录的情 ...

  9. python不登陆爬取淘宝数据_python登录并爬取淘宝信息代码示例

    本文主要分享关于python登录并爬取淘宝信息的相关代码,还是挺不错的,大家可以了解下. #!/usr/bin/env python # -*- coding:utf-8 -*- from selen ...

最新文章

  1. AtCoder AGC036D Negative Cycle (图论、DP)
  2. JDBC(二)驱动程序类型发展历程
  3. linux中的mysql使用_Linux下安装和使用MySQL(二)
  4. This time, ZTE has released the world‘s first
  5. 基于Ajax的应用程序架构汇总(一) (转自CSDN)
  6. ios超级签名_ios超级签名多少钱?决定超级签名价格的因素有哪些
  7. ab753变频器中文说明书_怎样快速学习使用和维修变频器
  8. file图片上传之前先预览
  9. c语言入门-程序运行的过程
  10. 2021年道路运输企业主要负责人和安全生产管理人员安全考核题型[安考星]
  11. 所谓更牛,就是换个罪受!——《时间的朋友2016跨年演讲》深入笔记
  12. [魔兽争霸制图 UI位置]
  13. Adobe Premiere视频添加水印图片教程,小白一看就会!
  14. 戴尔新电脑笔记本桌面没有计算机,自主日常维修,更换戴尔灵越15屏幕过程记录...
  15. 《名利场》:微软 “ 失落的十年”
  16. 起底飞书:在产品背后,看见现代管理哲学
  17. python 斗破苍穹 词云
  18. oracle成批事务处理,Oracle EBS OPM 生产批创建事务处理
  19. SQL优化的魅力!从 30248s 到 0.001s
  20. html和css制作上三角和下三角

热门文章

  1. 嵌入式分享合集140
  2. python中用什么函数去掉空格_Python中用于去除空格的三个函数的使用小结
  3. 苹果Mac电脑格式化数据怎么恢复?
  4. Latex插入参考文献的方法(两种全)
  5. 第十四届中国大学生服务外包创新创业大赛百度赛道-智慧医疗赛题baselin
  6. Error: Encountered an improper argument”的解决方法
  7. opencv求取图片各通道均值的两种函数方法
  8. 微信支付学习笔记之调用com.github.binarywang.wxpay.service接口
  9. 微课中职计算机基础,微课在中职计算机基础教学中的运用探究
  10. 华为EPON OLT开局配置