Python爬取有聲小說

2021-09-20 21:21:46 字數 4418 閱讀 2750

記錄一次自己的學習經歷,小白,非專業,難免有不足之處,望讀者取其精華!

功能如下:
使用工具:
整體思路:1.請求**,根據返回的**原始碼,查詢包含資源鏈結的標籤

2.請求資源鏈結,將資源儲存的本地,並命名

3.分析包含資源的網頁規律(url),迴圈爬取

4.設計介面,實現自動分析,方便操作

5.(可選項)打包成exe檔案,提公升移植性

def

getinfo

(url0)

:#請求頭

headers =

#請求網頁資料

# 拼合鏈結

#全域性變數 批量命名時的集數

global file_name_num

file_name_num = begin

wangzhi_1 = wangzhi

strinfo = re.

compile

('-(\d|\d\d|\d\d\d|\d\d\d\d).shtml'

) wangzhi_2 = strinfo.sub(

'-{}.shtml'

, wangzhi_1)

##根據匹配規則實現迴圈訪問頁面 詳情頁

urls =

[wangzhi_2.

format

(str

(i))

for i in

range

(begin, end+1)

]#''

#print()

for url in urls:

#設定要儲存到的路路徑

folderpath = store_path

url_download = getinfo(url)

download_file(url_download, folderpath, file_name_num, file_name)

#休眠1秒 防止訪問速度過快

time.sleep(1)

print()

defdownload_file

(url,folderpath,num,file_name)

:#引數中 folderpath 為要儲存的資料夾的路徑 num 為檔案編號

#資料夾不存在則建立資料夾

folder = os.path.exists(folderpath)

ifnot folder:

os.makedirs(folderpath)

#輸出儲存資訊

print(+

str(num)

+'集》'

, folderpath+

'/'+file_name+

'-'+

str(num)

+'.***'

)#請求資源鏈結 讀取遠端***資源

res = requests.get(url)

res.raise_for_status(

)#設定儲存的檔名

filename = os.path.basename(file_name+

'-'+

str(num)

+'.***'

) file_path = os.path.join(folderpath, filename)

#儲存到本地

***_file =

open

(file_path,

'wb'

)for chunk in res.iter_content(chunk_size=

1000000):

***_file.write(chunk)

***_file.close(

)print

(' ***第'

+str

(num)+)

#修改檔案編號 加 1

global file_name_num

file_name_num+=

1

#!/usr/bin/python

# -*- coding: utf-8 -*-

#介面庫使用 tkinter

import tkinter

from tkinter import

*import

next

#==next檔案為1-3中函式儲存的位置

root = tkinter.tk(

)# 建立視窗物件的背景色

root.title(

"聽書爬蟲程式"

)root.geometry(

"450x350"

)l1 = label(root, text=

"**名字:(如:****)"

)l1.pack( side = top)

e1 = entry(root, bd =

1, width=

'50'

)e1.pack(side = top)

l2 = label(root, text=

"儲存路徑:(如:d:/****)"

)l2.pack( side = top)

e2 = entry(root, bd =

1, width=

'50'

)e2.insert(0,

"d:/"

)e2.pack(side = top)

l3 = label(root, text=

"****:(如:ting-book-play-5264-1-1.shtml)"

)l3.pack( side = top)

e3 = entry(root, bd =

1, width=

'50'

)e3.pack(side = top)

l4 = label(root, text=

"起始集數:(如:1)"

)l4.pack( side = top)

e4 = entry(root, bd =

1, width=

'50'

)e4.pack(side = top)

l5 = label(root, text=

"終止集數:(如:67)"

)l5.pack( side = top)

e5 = entry(root, bd =

1, width=

'50'

)e5.pack(side = top)

l6 = label(root,text=

,fg=

"red"

)l6.pack( side = bottom)

#e7 = entry(root, bd =

1, width=

'50'

)e7.insert(0,

'')#在文字框開始位置插入「內容一」

e7.pack(side = bottom)

l7 = label(root, text=

)l7.pack( side = bottom)

#資訊輸入完成後 確認鍵呼叫的函式

defon()

:#獲取各個輸入框的內用

name = e1.get(

) path = e2.get(

) wangzhi = e3.get(

) begin = e4.get(

) end = e5.get(

)#傳遞引數

next

.onclick(name,path,wangzhi,begin,end)

b = tkinter.button(root, text=

"確認"

, height=

"1", command=on, width=

'50'

)b.pack(side=top)

root.mainloop(

)# 進入訊息迴圈

Python爬取小說

感覺這個夠蛋疼的,因為你如果正常寫的話,前幾次執行沒問題,之後你連 都沒改,再執行就出錯了。其實這可能是網路請求失敗,或者有反爬蟲的東西吧。但這就會讓你寫的時候非常苦惱,所以這這東西,健壯性及其重要!import requests from bs4 import beautifulsoup impo...

python 爬取小說

前些天突然想看一些 可能是因為壓力大,所以就要有補償機制吧。為了節省流量,就想著把內容爬下來,然後就可以在路上看了。於是有了下面的指令碼。usr bin env python coding utf 8 import requests from lxml import etree 為了解決unicod...

python爬取小說

一 準備 安裝 requests pyquery庫 二 使用 定義了search類 初始化時傳入 第一章url 和 名即可 再呼叫all content方法即可 coding utf8 import re import requests from requests.exceptions import...