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