# 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学习之小说爬虫相关推荐

  1. (私人收藏)python学习(游戏、爬虫、排序、练习题、错误总结)

    python学习(游戏.爬虫.排序.练习题.错误总结) https://pan.baidu.com/s/1dPzSoZdULHElKvb57kuKSg l7bz python100经典练习题 pyth ...

  2. Python学习三: 爬虫高级技巧 与 模拟实战练习

    三大爬虫技巧 许多网站针对爬虫的访问都设置了一定的障碍,通过这三步技巧,轻松绕过部分的反爬虫限制. (1)设置程序休止时间 import time import random# 休止睡眠 1 秒 这里 ...

  3. [深度学习]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 ...

  4. Python学习笔记(八)爬虫基础(正则和编解码)

    知识点 正则 正则匹配url,引用re库,将需要匹配的字段用(.*?)来匹配,可以匹配任何字符串.如果有换行,可以用如下方式解决: 1. ([\s\S]*?) 2. re.findall(reg,ht ...

  5. python学习之小小爬虫

    学习python一段时间了,写了一个图片的小小爬虫,分享下,不喜勿喷! #coding=utf-8 ''' Created on 2015-5-22@author: 悦文 '''import re i ...

  6. python编写爬虫的步骤-python学习: 写网络爬虫程序的三个难点

    写爬虫,是一个非常考验综合实力的活儿.有时候,你轻而易举地就抓取到了想要的数据:有时候,你费尽心思却毫无所获. 好多Python爬虫的入门教程都是一行代码就把你骗上了"贼船",等上 ...

  7. python学习笔记之爬虫框架scrapy(十七)

    一.安装 执行以下命令安装scrapy pip install scrapy 注意: Scrapy是用纯Python编写的,并且依赖于一些关键的Python包(以及其他一些包): lxml,高效的XM ...

  8. Python学习 | 10个爬虫实例

     如何安装requests库(安装好python的朋友可以直接参考,没有的,建议先装一哈python环境) windows用户,Linux用户几乎一样: 打开cmd输入以下命令即可,如果python的 ...

  9. 小说网站竟然没有下载功能?跟小姐姐学会这个python小说爬虫,把全文小说带回家!

    hello大家好,我是你们的可爱丸,不知道你们有没有遇到过这种情况: 自己喜欢的小说竟然只能看不能下载??? 作为一个python学习者,这种情况当然不能忍,那么今天我就教大家用python写一个小说 ...

  10. python爬虫工程师需要会什么软件_Python学习教程:爬虫工程师必备的10个爬虫工具!...

    Python学习教程:爬虫工程师必备的10个爬虫工具! 最近很多学爬虫的伙伴让推荐顺手的爬虫工具,南瓜花了点时间总结了一下,把这些好用的爬虫工具都跟你们找齐活了! 都知道工欲善其事必先利其器,那么作为 ...

最新文章

  1. 抛弃windows用linux来工作吧
  2. 在 Shell 脚本中跟踪调试命令的执行
  3. Sklearn 损失函数如何应用到_Sklearn库主要模块功能简介
  4. Jerry's spark demo application
  5. leetcode1337. 方阵中战斗力最弱的 K 行(优先队列)
  6. 1105学习笔记 数组的算法上
  7. find找多个单元格的文本_灵活套用LEFT、RIGHT、MID、FIND函数,解决90%的信息提取问题...
  8. HTTP的长连接和短连接通俗解释以及应用场景
  9. wps合并所有sheet页_别找了,你要的Excel多表合并都在这里了
  10. 您可能(或可能不)知道的5条便捷的Transact-SQL技巧
  11. Hadoop学习记录(6)|Eclipse安装Hadoop 插件
  12. [转载] python如何删除对象属性_Python3基础 delattr 删除对象的属性
  13. Hibernate与mybatis比较
  14. cocos2d-x使用ant批量打包
  15. 用汇编语言实现c语言程序例题,C语言详细例题大全
  16. ECCV 2020 目标检测论文大盘点(49篇论文)
  17. 如何选择和阅读科技论文
  18. Class6 基于ECS和NAS搭建个人网盘
  19. 新浪微博僵粉(机器粉)识别方法
  20. What is road rage?

热门文章

  1. 浅谈MySQL索引背后的数据结构及算法【转】
  2. 开源代码MyCommons
  3. pdf2image安装
  4. 强化学习 RL - DQN - 智能体Agent
  5. 微软亚洲研究院周明 | 从语言智能到代码智能
  6. 他曾经复读才考上三本,如今让华为开出 201 万年薪(其实还拒绝了 360 万 offer)...
  7. 【ACL2019】轻松了解张岳实验室的六篇paper
  8. 2019年在NLP领域,资源有限的个人/团队能做哪些有价值有希望的工作?
  9. 机器翻译的前世今生(1)
  10. 火山同传助力第四届CTDC首席技术官领袖峰会