python学习之小说爬虫
# coding:utf8from multiprocessing.dummy import Pool as ThreadPoolimport multiprocessingimport requests, os, codecs, timefrom lxml import etree url = 'https://www.biquge5200.cc/79_79883/' # 要下载的小说章节列表页面url def getsource(url): try: s = requests.get(url) except: print('访问异常,跳过~!') else: s.encoding = 'gbk' return s.text def getlist(url): global txtname, txtzz #解析地址 html = getsource(url) ehtml = etree.HTML(html) u = ehtml.xpath('//*[@id="list"]/dl/dd/a/@href') t = ehtml.xpath('//*[@id="list"]/dl/dd/a/text()') txtname = ehtml.xpath('//*[@id="info"]/h1/text()')[0].replace('\\', '').replace('/', '').replace(':', '').replace( '*', '').replace('?', '').replace('"', '').replace('<', '').replace('>', '').replace('|', '') txtzz = ehtml.xpath('//*[@id="info"]/p[1]/text()')[0].replace('\xa0', '') num = 0 #循环urllist for i in range(9, len(u)): urllist.append(u[i] + '|' + t[i] + '|' + str(num)) print(urllist) print(u[i] + '|' + t[i] + '|' + str(num)) num += 1 def downtxt(url): global downcount u = url.split('|')[0] t = url.split('|')[1] num = url.split('|')[2] content = '' while len(content) == 0: html = getsource(u) ehtml = etree.HTML(html) content = ehtml.xpath('string(//*[@id="content"])').replace(' ', '\r\n').replace(' ', '\r\n').replace( '\xa0', '').replace('\ufffd', '').replace('\u266a', '').replace('readx;', '') if os.path.exists(savepath + num + '.txt'): print(num + '.txt 已经存在!') else: with codecs.open(savepath + num + '.txt', 'a')as f: f.write('\r\n' + t + '\r\n' + content) print(t + ' 下载完成!') downcount += 1 time_start = time.time();downcount = 0urllist = []getlist(url)savepath = os.getcwd() + '\\' + txtname + '\\'if os.path.exists(savepath) == False: os.makedirs(savepath)pool = ThreadPool(multiprocessing.cpu_count())results = pool.map(downtxt, urllist)pool.close()pool.join()print('开始合并txt...')with codecs.open(savepath + txtname + '.txt', 'a')as f: f.write(txtname) f.write('\r\n') f.write(txtzz) f.write('\r\n') for i in range(0, len(urllist)): with open(savepath + str(i) + '.txt', "r") as fr: txt = fr.read() f.write(txt) f.write('===========================') fr.close() os.remove(savepath + str(i) + '.txt')print('小说合并完成~!') print('')print('*' * 15 + ' 任务完成,结果如下:' + '*' * 15)print('')print('<' + txtname + '> 下载完成' + ',获取并下载章节页面:' + str(downcount) + ' 个')print('')print('耗时:' + str(time.time() - time_start) + ' s')print('')print('*' * 51)
转载于:https://www.cnblogs.com/hfct/p/10977974.html
python学习之小说爬虫相关推荐
- (私人收藏)python学习(游戏、爬虫、排序、练习题、错误总结)
python学习(游戏.爬虫.排序.练习题.错误总结) https://pan.baidu.com/s/1dPzSoZdULHElKvb57kuKSg l7bz python100经典练习题 pyth ...
- Python学习三: 爬虫高级技巧 与 模拟实战练习
三大爬虫技巧 许多网站针对爬虫的访问都设置了一定的障碍,通过这三步技巧,轻松绕过部分的反爬虫限制. (1)设置程序休止时间 import time import random# 休止睡眠 1 秒 这里 ...
- [深度学习]Part1 Python学习进阶Ch23爬虫Spider——【DeepBlue学习笔记】
本文仅供学习使用 Python高级--Ch23爬虫Spider 23. 爬虫Spider 23.1 HTTP基本原理 23.1.1 URI与URL 23.1.2 超文本 23.1.3 HTTP 和 H ...
- Python学习笔记(八)爬虫基础(正则和编解码)
知识点 正则 正则匹配url,引用re库,将需要匹配的字段用(.*?)来匹配,可以匹配任何字符串.如果有换行,可以用如下方式解决: 1. ([\s\S]*?) 2. re.findall(reg,ht ...
- python学习之小小爬虫
学习python一段时间了,写了一个图片的小小爬虫,分享下,不喜勿喷! #coding=utf-8 ''' Created on 2015-5-22@author: 悦文 '''import re i ...
- python编写爬虫的步骤-python学习: 写网络爬虫程序的三个难点
写爬虫,是一个非常考验综合实力的活儿.有时候,你轻而易举地就抓取到了想要的数据:有时候,你费尽心思却毫无所获. 好多Python爬虫的入门教程都是一行代码就把你骗上了"贼船",等上 ...
- python学习笔记之爬虫框架scrapy(十七)
一.安装 执行以下命令安装scrapy pip install scrapy 注意: Scrapy是用纯Python编写的,并且依赖于一些关键的Python包(以及其他一些包): lxml,高效的XM ...
- Python学习 | 10个爬虫实例
如何安装requests库(安装好python的朋友可以直接参考,没有的,建议先装一哈python环境) windows用户,Linux用户几乎一样: 打开cmd输入以下命令即可,如果python的 ...
- 小说网站竟然没有下载功能?跟小姐姐学会这个python小说爬虫,把全文小说带回家!
hello大家好,我是你们的可爱丸,不知道你们有没有遇到过这种情况: 自己喜欢的小说竟然只能看不能下载??? 作为一个python学习者,这种情况当然不能忍,那么今天我就教大家用python写一个小说 ...
- python爬虫工程师需要会什么软件_Python学习教程:爬虫工程师必备的10个爬虫工具!...
Python学习教程:爬虫工程师必备的10个爬虫工具! 最近很多学爬虫的伙伴让推荐顺手的爬虫工具,南瓜花了点时间总结了一下,把这些好用的爬虫工具都跟你们找齐活了! 都知道工欲善其事必先利其器,那么作为 ...
最新文章
- 抛弃windows用linux来工作吧
- 在 Shell 脚本中跟踪调试命令的执行
- Sklearn 损失函数如何应用到_Sklearn库主要模块功能简介
- Jerry's spark demo application
- leetcode1337. 方阵中战斗力最弱的 K 行(优先队列)
- 1105学习笔记 数组的算法上
- find找多个单元格的文本_灵活套用LEFT、RIGHT、MID、FIND函数,解决90%的信息提取问题...
- HTTP的长连接和短连接通俗解释以及应用场景
- wps合并所有sheet页_别找了,你要的Excel多表合并都在这里了
- 您可能(或可能不)知道的5条便捷的Transact-SQL技巧
- Hadoop学习记录(6)|Eclipse安装Hadoop 插件
- [转载] python如何删除对象属性_Python3基础 delattr 删除对象的属性
- Hibernate与mybatis比较
- cocos2d-x使用ant批量打包
- 用汇编语言实现c语言程序例题,C语言详细例题大全
- ECCV 2020 目标检测论文大盘点(49篇论文)
- 如何选择和阅读科技论文
- Class6 基于ECS和NAS搭建个人网盘
- 新浪微博僵粉(机器粉)识别方法
- What is road rage?