手機版python爬取網頁書籍

qq_20575249發表於2020-12-19

喜歡玩python , 又睡不著 爬蟲玩玩
做大專案又做不了 。所以就選擇了做個電子書爬蟲專案。
作者是個假程式設計師 ,寫的程式碼自己都覺得噁心。各位大神看了請別吐!

算了還是別bb 也不知道該說啥了
請看先 效果圖吧

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

程式碼如下(示例):

# coding:utf-8
import time
import os
from bs4 import BeautifulSoup
import requests
import requests.packages.urllib3.util.ssl_
requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS = 'ALL'
from threading import Thread
def Get(url):        # 定義網頁爬取函式方便多次呼叫
    time.sleep(3)
    webdata = requests.get(url).text
    Data = BeautifulSoup(webdata,'html.parser')
    return Data


def 小說目錄(url,書名):
    書名 = 書名
    webdata = Get(url)
    li_all = webdata.find(attrs={'class':'book-list clearfix'}).find('ul').find_all('a')
    print(li_all)
    目錄 = []
    i = 0 
    for all in li_all:
        t = Thread(target = 解析章節,args=(all.get('href'),書名,i))
        t.start() 
        Data = '◇<A href="'+str(i)+'.html'+'" >'+all.text+'</A><BR>'
        目錄.append(Data)
        i+=1
    目錄頁儲存(書名,目錄)        

def 目錄頁儲存(書籍,html_links):  # 書籍目錄頁儲存函式
    htmlLink ='<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><style type="text/css">@font-face{font-family:lianbi;src:url(font/連筆簽名字型.ttf)}.lianbi{font-family:lianbi;font-size:50px;text-shadow:none}</style></head><body><td width="68"><a href="index.html"><img border="0" src="../上頁.gif" width="64" height="23"></a></td><td width="68"><a href="../../../main.html"><img border="0" src="../目錄.gif" width="64" height="23"></a></td><td width="68"><a href="index.html"><img border="0" src="../下頁.gif" width="64" height="23"></a></td><center><p align="center"><b><font size="7" face="lianbi">目錄</font></b></p><table border="0" cellpadding="0" cellspacing="0"><td><font face="lianbi" size="5" color="#000000">'
    Data=""
    for line in html_links:
        Data += line
        
    HHH = htmlLink+Data+'</font></td></center></body></html>'
    mdpath = os.getcwd() + '/' + 書籍
    if not os.path.exists(mdpath):
        os.makedirs(mdpath)
    HtmlFile=open(mdpath+'/index.html','w', encoding='UTF-8')
    HtmlFile.write(HHH) 
    HtmlFile.close()

def 解析章節(url,書名,章節標題):
    書籍 = 書名
    標題 = 章節標題
    Data = Get(url)
    # 正文
    li = Data.find(id = 'nr1')
    print('章節內容:',li)
    t = Thread(target = 章節儲存,args=(書籍,標題,str(li)))
    t.start() 
def 章節儲存(書籍,i,內容):   # 定義網頁章節儲存函式
    if i==0:
        shangyiye = i
        xiayiye =  i+1
    else:
        shangyiye = i-1
        xiayiye =  i+1
    line= '<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><style type="text/css">@font-face{font-family:lianbi;src:url(font/連筆簽名字型.ttf)}.lianbi{font-family:lianbi;font-size:50px;text-shadow:none}</style></head><body><td width="68"><a href="'+str(shangyiye)+'.html"><img border="0" src="../上頁.gif" width="64" height="23"></a></td><td width="68"><a href="index.html"><img border="0" src="../目錄.gif" width="64" height="23"></a></td><td width="68"><a href="'+str(xiayiye)+'.html"><img border="0" src="../下頁.gif" width="64" height="23"></a></td><font face="lianbi" size="5" color="#000000"><p align="center"><b><font size="6" >'+str(i)+'</font></b></p>'+內容+'</font></body></html>'
    mdpath = os.getcwd() + '/' + 書籍
    if not os.path.exists(mdpath):
        os.makedirs(mdpath)
    HHH = str(i)+"/n"+內容
    HtmlFile=open(mdpath+'/'+str(i)+'.html','w', encoding='UTF-8')
    HtmlFile.write(str(line))
    HtmlFile.close()    
if __name__ == '__main__':
    書名 = "阿Q正傳"
  
    url = "https://www.xingyueboke.com/aqzhengzhuan/"
    小說目錄(url,書名) 
    

    

相關文章