网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

Python实现的爬取小说爬虫功能示例-创新互联

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

大悟ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!

想把顶点小说网上的一篇持续更新的小说下下来,就写了一个简单的爬虫,可以爬取爬取各个章节的内容,保存到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实现的爬取小说爬虫功能示例-创新互联
链接分享:http://bjjierui.cn/article/ccpehe.html

其他资讯