Python帶進度條的小說爬蟲(筆趣網爬小說—簡約版)

     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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章