原文来自:  https://blog.csdn.net/u012717715/article/details/92811743

本人说明:其实严格地这不是转载,实际上更应该算是原创!原文代码不能正常运行(我推测准确说应该是:原系统是在MAC中开发的,但在win中有若干问题),所以才有本文,但是实际上就算在windows中还是有问题没有完全解决:就是如果保存数据的文件夹和文件已经存在则会有错误发生,所以大家使用时如果碰到请手工删除他们。本来是想发在原文的评论中,但是评论篇幅有限,只能发40行代码!没办法才单独发的

程序的原理那些请看原文

环境:win10 20h2 19042.804,64位简体中文版,python-3.9.2,VScode x64 1.53.2

一、要pip install lxml和pip install requests

二、完整代码修改后如下

# -*- coding:UTF-8 -*-
from bs4 import BeautifulSoup
import requests, sys, threading , os , shutil"""
类说明:下载《笔趣看》网小说《一念永恒》
Parameters:无
Returns:无
Modify:2017-09-13
"""
class downloader(object):def __init__(self):self.server = 'http://www.biqukan.com/'self.target = 'http://www.biqukan.com/1_1094/'self.names = []            #存放章节名self.urls = []            #存放章节链接self.nums = 0            #章节数"""函数说明:获取章节列表以及对应的下载链接列表Parameters:无Returns:无Modify:2017-09-13"""def get_download_url(self):req = requests.get(url = self.target)html = req.textdiv_bf = BeautifulSoup(req.content,'lxml')div = div_bf.find_all('div', class_ = 'listmain')a_bf = BeautifulSoup(str(div[0]),'lxml')a = a_bf.find_all('a')self.nums = len(a[13:])  #剔除不必要的章节,并统计章节数for each in a[13:]:self.names.append(each.string)self.urls.append(self.server + each.get('href'))"""函数说明:获取对应章节的内容Parameters:target - 下载连接(string)Returns:texts - 章节内容(string)Modify:2017-09-13"""def get_contents(self, target):req = requests.get(url = target)html = req.textbf = BeautifulSoup(req.content, 'lxml')texts = bf.find_all('div', class_ = 'showtxt')texts = texts[0].text.replace('\xa0'*8,'\n\n')return texts"""函数说明:将爬取的文章内容写入文件Parameters:name - 章节名称(string)path - 当前路径下,小说保存名称(string)text - 章节内容(string)Returns:无Modify:2017-09-13"""def writer(self, name, path, text):write_flag = Truewith open(path, 'a', encoding='utf-8') as f:'''f.write(name + '\n')f.writelines(text)'''tmpstr=name+ '\n'+textf.write(tmpstr)f.write('\n\n')class myThread (threading.Thread):   #继承父类threading.Threaddef __init__(self, name,temdl,startNum,endNum):threading.Thread.__init__(self)self.runlist = list()self.name = nameself.temdl = temdlself.startNum = startNumself.endNum = endNumdef run(self):                   #把要执行的代码写到run函数里面 线程在创建后会直接运行run函数 print ("Starting " + self.name)startDownloadTxt(self.temdl,self.startNum,self.endNum)print ("Exiting " + self.name)def mkdir(path):'''判断路径是否存在存在     True不存在   False''' isExists=os.path.exists(path)if not isExists:os.makedirs(path) return Trueelse:return Falsedef subFile(path):#特定目录下的文件列表docList = os.listdir(path)# 显示当前文件夹下所有文件并进行排序'''key = lambda x:int(x[:-4])忽略文件名开始到倒数第四个字符为止docList.remove(i)删除数组中点开头的系统隐藏文件,因为会影响排序'''for i in docList:if(i[0]=='.'):docList.remove(i)breakdocList.sort(key = lambda x: int(x[:-4]))#创建一个以书籍名字命名的文件fnamepath = path+'/一念永恒.txt'fname = open(fnamepath, "w", encoding='utf-8')#打开你之前命名的下载文件for i in docList:tempath = path+'/'+ix = open (tempath,  "r", encoding='utf-8')    #打开列表中的文件,读取文件内容fname.write(x.read())  #写入新建的文件中x.close()    #关闭列表文件fname.close()#移动最后的完成文件到桌面,在删除download文件夹(windows环境下根据情况自己修改路径)shutil.move(fnamepath, 'c:/Users/lps/Desktop')shutil.rmtree(path)'''
temdl:downloader类
startNum,endNum开始和结束的rang
'''
def startDownloadTxt(temdl,startNum,endNum):mkdir('download')for i in range(startNum,endNum):temPath = './download/'+str(i)+'.txt'tem=temdl.get_contents(temdl.urls[i])temdl.writer(temdl.names[i], temPath, temdl.get_contents(temdl.urls[i]))print(temdl.names[i]+'done')if __name__ == "__main__":dl = downloader()#获取章节列表以及对应的下载链接列表dl.get_download_url()print('《一年永恒》开始下载:')# 创建二十个线程(太多的话,会卡)threads = []threadNum = 40for p in range(threadNum):threadname = '"Thread'+str(p)stepNum = dl.nums//threadNumif(p==threadNum-1):thread = myThread(threadname,dl,p*stepNum,dl.nums)else:thread = myThread(threadname,dl,p*stepNum,(p+1)*stepNum)threads.append(thread)try:# 开启线程for t in threads:t.start()for t in threads:t.join()except:print ("Error: unable to start thread")subFile('./download')
print('一念永恒下载完成')

python爬取笔趣阁小说的代码微小调整修改相关推荐

  1. python爬取笔趣阁小说(附源码)

    python爬取笔趣阁小说 文章目录 python爬取笔趣阁小说 前言 一.获取小说目录结构 获取目录连接 请求代码 解析目录 XPath tqdm 解析 二.获取小说章节结构 请求代码 解析章节 代 ...

  2. python爬取小说爬取_用python爬取笔趣阁小说

    原标题:用python爬取笔趣阁小说 首先打开笔趣阁网址,链接,搜索自己想要的小说. 在网站内单击右键,点击检查,会出现如下界面! 我们需要的章节信息就在我划的这块, 可以将每个标签点一下,它对应的内 ...

  3. 1.python爬取笔趣阁小说

    前一阵无聊想学习python,就有了以下代码,选取了笔趣阁这个大众化的网站,百度发现以笔趣阁为名的小说网站很多,本段代码只在百度结果里选取前五条,并选取了三个叫笔趣阁的网站,前五条里包含笔趣阁的任意一 ...

  4. Python爬取笔趣阁小说,有趣又实用!

    上班想摸鱼?为了摸鱼方便,今天自己写了个爬取笔阁小说的程序.好吧,其实就是找个目的学习python,分享一下. 1. 首先导入相关的模块 import os import requests from ...

  5. 用python爬取笔趣阁小说并分章节保存到本地

    在宿舍无聊时想做点小程序,刚好又看到笔趣阁的广告,就想着爬一下小说看看,通过网上的爬取教程整理的 使用beautifulsoup解析request获取的HTML http://beautifulsou ...

  6. Python爬取笔趣阁小说2.0版

    之前的爬虫文章中,我们只可以爬取某本特定的小说,小波大叔一般喜欢看玄幻和修真类的,那么想把这一类小说全部爬下来该怎么操作呢,2.0版本来了,依然还是笔趣阁网站,初学者而言,这个没有反扒机制,比较方便. ...

  7. 通过python爬取笔趣阁小说,获取图片保存本地,数据保存mysql

    通过python爬取小说图片.小说名称.作者.章节.内容.直接上代码 import requests import time from bs4 import BeautifulSoup from qu ...

  8. 1-4 python爬取笔趣阁小说(附带完整代码)

    笔趣看是一个盗版小说网站,这里有很多起点中文网的小说,该网站小说的更新速度稍滞后于起点中文网正版小说的更新速度.并且该网站只支持在线浏览,不支持小说打包下载.所以可以通过python爬取文本信息保存, ...

  9. python 爬取笔趣阁小说(TK可视化)

    import requests from lxml import etree from pyquery import PyQuery as pq import re import time from ...

最新文章

  1. 听完411头猪的哼哼,他们找到了理解“猪语”的算法 | Scientific Reports
  2. 另类设计:12个基于桌面视图的网页设计作品
  3. 内存屏障在硬件层面的实现原理
  4. C# ListView控件显示表格(自适应宽度),添加 Checkbox,删除选择项,选中颜色和鼠标滑过背景变色
  5. Spring Session实战2
  6. 为甚么 国企做互联网总做不起来?
  7. python简单实用案例_Python 21 Django 实用小案例1
  8. Linux crontab
  9. 【Android】1.1 开发环境安装和配置
  10. 【数学模型】基于Matlab实现洪水调度运算
  11. 天线理论巴拉尼斯_天线学习类图书推荐 - 欧源通天线厂家
  12. C/C++二维数组指针(指向二维数组的指针)详解
  13. 相机外部参数—世界坐标、相机坐标、物体坐标变换
  14. 一次系统宕机认识系统日志
  15. (转)MSDN Library “已取消到该网页的导航”解决办法
  16. Fincy APP评测:安全好用的多功能电子钱包
  17. [附源码]Python计算机毕业设计超市商品管理系统
  18. 使用easyexcel快速导出xlsx表格(简洁、高效、易懂)
  19. 新人!发个 电力信息化可研模板*
  20. Ubuntu 软件仓库源

热门文章

  1. 塑胶围栏的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  2. 美团网CEO王兴:创业十年屡败屡战 终成硕果
  3. wps文件上的logo怎么去掉_WPS卸载后Office图标显示出现问题怎么办?(解决方法)...
  4. gitlab搭建(1)---centos7搭建gitlab服务器
  5. 【2020暑假牛客多校(一)】
  6. 程序员CMD命令大全
  7. ECCV2020 | SNE-RoadSeg:一种基于表面法向量提取的道路可行驶区域分割方法
  8. Lumerical Python API学习(七)——可视化几何
  9. springcloud在 repository层通过sql语句实现查询功能
  10. 从微博搜索相关话题下的所有热门博文链接