在這裡附上執行的結果圖
# 列表用來存放所有的url
q = queue.queue(
)headers =
defdownload()
:while
true
:# 判斷執行緒1是否存活
ifnot t1.is_alive():
# 判斷佇列是否為空
if q.empty():
break
url, name, i = q.get(
) path = down_path +
'\\'
+ name
ifnot os.path.exists(path)
: os.makedirs(path)
os.chdir(path)
r = requests.get(url, headers=headers)
# 對檔案讀寫上鎖
)# 這裡寫詳情頁的邏輯
defdetail
(link)
:# 對詳情頁傳送請求
r = requests.get(link, headers=headers)
r.encoding =
'gbk'
# 解析html
tree = etree.html(r.text)
# 提取套圖數量以及名稱
pic_msg = tree.xpath(
'//div[@class="wzfz tu-tit fix"]/h1/span/text()')[
0]# 正則提取(這裡沒必要提取num)
name, num = re.findall(
'(.*?)\(\d/(\d)'
, pic_msg)[0
]# 提取出當前頁面所有的套圖連線
first_pic = tree.xpath(
'//ul[@id="showimg"]/li/img/@src')[
0]last_pic_list = tree.xpath(
'//ul[@id="showimg"]/li/a/img/@src'
)# 把第一張新增進套圖列表(指定第乙個位置新增)
last_pic_list.insert(
0, first_pic)
for pic_url, i in
zip(last_pic_list,
range(1
,len
(last_pic_list)+1
)): d =
[pic_url, name, i]
q.put(d)
# download(pic_url, name, i)
# print(pic_url)
# 這裡是首頁的邏輯
defmain
(base_url)
:# 對首頁傳送請求
r = requests.get(base_url, headers=headers)
r.encoding =
'gbk'
# 解析html
tree = etree.html(r.text)
# 提取出當前頁面所有的套圖連線
total_list = tree.xpath(
'//ul[@class="picbz"]/li/a[1]/@href'
)# print(total_list, len(total_list))
for link in total_list:
# print(link)
link =
''+ link
detail(link)
defrun()
:# 總共39頁
for i in
range(1
,39):
url =
'/bz/ktmh/list_16_{}.html'
.format
(i) main(url)
# 程式的入口
if __name__ ==
'__main__'
:# 建立執行緒鎖
lock = threading.lock(
)# 建立多執行緒
t1 = threading.thread(target=run)
t2 = threading.thread(target=download)
# 開啟多執行緒
t1.start(
) t2.start(
)總結,多執行緒之間使用佇列,可以讓執行緒之間的資料傳輸變得更加安
python 爬取王者榮耀高畫質桌布
位址如下 打過王者的童鞋一般都會喜歡裡邊設計出來的英雄吧,特別想把王者榮耀的英雄的高畫質當成電腦桌面 預覽一下桌面吧 問題簡單了就 api 返回情況,大致如下 是乙個jsonp callback的返回 這種情況一般是callback後邊對應了乙個json物件,我們可以用python的 json 類庫...
python3爬取高畫質桌布 2
上次只是爬取乙個 的,這次要爬取一整個頁面的所有 的。在上次的 的基礎上進行修改就行了,從 的索引頁面開始,爬取該頁面上所有的 的鏈結,再套用上次的 就行了。若要爬取多個頁面只需在外圍套上乙個迴圈就可以了。如下 import requests import refrom bs4 import bea...
Python 爬取高畫質桌面桌布
今天寫了乙個指令碼用來爬取zol桌面桌布 的高畫質 如下 coding utf 8 import urllib import re import time class spider baseurl pic index 0 itemgrouppic def init self,page count t...