Python爬蟲爬取高畫質桌布 多執行緒2

2021-10-07 14:16:40 字數 2817 閱讀 1387

在這裡附上執行的結果圖

# 列表用來存放所有的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...