記錄一次自己的學習經歷,小白,非專業,難免有不足之處,望讀者取其精華!
功能如下:
使用工具:
整體思路:1.請求**,根據返回的**原始碼,查詢包含資源鏈結的標籤def2.請求資源鏈結,將資源儲存的本地,並命名
3.分析包含資源的網頁規律(url),迴圈爬取
4.設計介面,實現自動分析,方便操作
5.(可選項)打包成exe檔案,提公升移植性
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(
(' ***第'
+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...