python爬取小说功能实现_Python实现的爬取小说爬虫功能示例
本文实例讲述了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('
(.+?)
', 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实现的爬取小说爬虫功能示例相关推荐
- python爬取小说项目概述_Python实现的爬取小说爬虫功能示例
Python实现的爬取小说爬虫功能示例 发布时间:2020-10-09 03:39:58 来源:脚本之家 阅读:64 作者:阳光Cherry梦 本文实例讲述了Python实现的爬取小说爬虫功能.分享给 ...
- python提取图片文字视频教学_Python学习第七天之爬虫的学习与使用(爬取文字、图片、 视频)...
一.爬虫记得基本方法 1.1 爬虫概述 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使 ...
- python爬取文字和图片_Python学习第七天之爬虫的学习与使用(爬取文字、图片、 视频)...
[toc] 一.爬虫记得基本方法 1.1 爬虫概述 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本. ...
- 用python爬取小说的总结_python如何使爬取的小说更利于观看
python使爬取的小说更利于观看的方法: 1.使用追加模式将文章写入txt文本 关于文件的写入, 'w' 的方式 是覆盖写, 没有就创建, 那么我们写小说就不需要用这个, 使用 'a' 追加写的模式 ...
- 怎么用python爬小说统计词频_python小练习爬取《寻梦环游记》评论并做词频统计...
本来其实是想爬豆瓣电影上10几万条评论的,但后来ip被封了,换代理ip之类的还不熟练,还在学习中,所以先做时光网上10页评论的分析吧,虽然时光网上粗粗一看评论就短了很多,水了很多.主要是继续练习Bea ...
- python爬取b站评论_python高效之爬了B站再爬微博
全文简介 本文是用Python爬取微博移动端的数据.可以看一下Robots协议.另外尽量不要爬取太快.如果你毫无节制的去爬取别人数据,别人网站当然会反爬越来越严厉.所以,不要难为别人,到最后其实是在难 ...
- python爬取微信公众号_python使用webdriver爬取微信公众号
本文实例为大家分享了python使用webdriver爬取微信公众号的具体代码,供大家参考,具体内容如下 # -*- coding: utf-8 -*- from selenium import we ...
- python爬取微博热搜_Python 超简单爬取微博热搜榜数据
微博的热搜榜对于研究大众的流量有非常大的价值.今天的教程就来说说如何爬取微博的热搜榜.热搜榜的链接是: https://s.weibo.com/top/summary/ 用浏览器浏览,发现在不登录的情 ...
- python不登陆爬取淘宝数据_python登录并爬取淘宝信息代码示例
本文主要分享关于python登录并爬取淘宝信息的相关代码,还是挺不错的,大家可以了解下. #!/usr/bin/env python # -*- coding:utf-8 -*- from selen ...
最新文章
- AtCoder AGC036D Negative Cycle (图论、DP)
- JDBC(二)驱动程序类型发展历程
- linux中的mysql使用_Linux下安装和使用MySQL(二)
- This time, ZTE has released the world‘s first
- 基于Ajax的应用程序架构汇总(一) (转自CSDN)
- ios超级签名_ios超级签名多少钱?决定超级签名价格的因素有哪些
- ab753变频器中文说明书_怎样快速学习使用和维修变频器
- file图片上传之前先预览
- c语言入门-程序运行的过程
- 2021年道路运输企业主要负责人和安全生产管理人员安全考核题型[安考星]
- 所谓更牛,就是换个罪受!——《时间的朋友2016跨年演讲》深入笔记
- [魔兽争霸制图 UI位置]
- Adobe Premiere视频添加水印图片教程,小白一看就会!
- 戴尔新电脑笔记本桌面没有计算机,自主日常维修,更换戴尔灵越15屏幕过程记录...
- 《名利场》:微软 “ 失落的十年”
- 起底飞书:在产品背后,看见现代管理哲学
- python 斗破苍穹 词云
- oracle成批事务处理,Oracle EBS OPM 生产批创建事务处理
- SQL优化的魅力!从 30248s 到 0.001s
- html和css制作上三角和下三角
热门文章
- 嵌入式分享合集140
- python中用什么函数去掉空格_Python中用于去除空格的三个函数的使用小结
- 苹果Mac电脑格式化数据怎么恢复?
- Latex插入参考文献的方法(两种全)
- 第十四届中国大学生服务外包创新创业大赛百度赛道-智慧医疗赛题baselin
- Error: Encountered an improper argument”的解决方法
- opencv求取图片各通道均值的两种函数方法
- 微信支付学习笔记之调用com.github.binarywang.wxpay.service接口
- 微课中职计算机基础,微课在中职计算机基础教学中的运用探究
- 华为EPON OLT开局配置