Python带进度条的小说爬虫(笔趣网爬小说—简约版)
准备:
BeautifulSoup、selenium、PhantomJS 注意PhantomJS安装方式
这里附上安装方式连接:
https://blog.csdn.net/qq_42543301/article/details/81542880
其他的自行百度 或者pip install一下
还有一点需要注意:
有可能selenium的版本过高带来的问题
解决连接:https://www.cnblogs.com/zouke1220/p/9379839.html
开始:(没啥可以说的,很简单,注释写的很清楚)
#coding=utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
#-----------------------------------以上为控制编码方式
from bs4 import BeautifulSoup
from selenium import webdriver
#-----------------------------------以上为引入所需要的包
target='https://www.biqukan.com' #网站链接
url='https://www.biqukan.com/1_1094/5403177.html' #小说网内网址
index=1 #全局变量下载基数
#-------------下载函数----------------
def download (nexturl):
global index #全局变量声明一下
print nexturl #调试输出一下网址
driver = webdriver.PhantomJS() #加载PhantomJS 如果在ide里一直报不支持的错误并且也按照帖子安装好了,那就重启试一下
driver.get(nexturl)
data = driver.page_source
driver.quit()
source = BeautifulSoup(data,"lxml") #解析一下执行过js的网页代码
res=source.find(id="content",class_="showtxt").get_text() #找到存放小说内容的标签
title = source.select(".content h1")[0].get_text() #获取小说的章节标题
#------------写入文件------------------
with open(title + ".txt", "w") as f:
for ind in range(len(res)):
i = int(float(ind+1)/len(res)*100)
s1 = "\r[%s%s]%d%%" % ("*" * i, " " * (100 - i), i)
sys.stdout.write(s1)
sys.stdout.flush() #清空缓冲区
time.sleep(0.001)
f.close()
index =index + 1
print title+"下载完成!"
#获取下一章的连接
next = source.find(class_="page_chapter")
next = next.select("li a")
if len(next)<4 or index>10: #4的含义是存放上一章下一章的div里共4个li 若少于4个说明下一章不在了即最后一章 10 是表示最多下载10章
print "下载结束!"
return
else:
for a in next:
if a.get_text()=="下一章":
download(target+a.get("href")) #简单递归调用
if __name__=="__main__":
download(url)
望观看大神指教12