python多線程爬取斗圖網(wǎng)表情包

一共需要導(dǎo)入如下的庫

from bs4 import BeautifulSoup
import requests
import time
import threading
import queue

網(wǎng)址是https://www.doutula.com/photo/list/?page=1

首先要這是request頭。

調(diào)用request.get獲取相應(yīng),

將源代碼寫入到‘1.html’

url='https://www.doutula.com/photo/list/?page=1'

headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'}

resp=requests.get(url,headers=headers)
with open('1.html','bw') as fp:
    fp.write(resp.content)

使用beautiful解析html文本,設(shè)置lxml解析器。

接下來是多線程爬取動圖。

python的多線程 使用于IO繁忙型,不適用于cpu計(jì)算型。

因?yàn)閜ython的多線程是單核多線程。無法并行,只能并發(fā)。

python自帶的隊(duì)列queue具有原子性,是線程安全的。但仍需要引入鎖來控制。

引入time庫是為了計(jì)算程序運(yùn)行時(shí)間.


with open('1.html','r',encoding='utf-8') as fp:
    html=fp.read()

text=BeautifulSoup(html,'lxml')
div=text.select_one('div.page-content')
imgs=div.find_all('img')
i=0
start=time.time()
#--------------------------------------------------------------------------

def go():
    global Q,i

    while True:
        Lock.acquire()
        if(Q.empty()):
            Lock.release()
            break
        url=Q.get()
        Lock.release()
        resp = requests.get(url, headers=headers)
        Lock.acquire()
        with open('img/' + str(i) + '.jpg', 'bw') as fp:
            i += 1
            Lock.release()
            fp.write(resp.content)

Q=queue.Queue(90)
i=0
for img in imgs:
    if (img.get('data-backup')):
        img_url = img['data-backup']

        Q.put(img_url)
Lock=threading.RLock()
T=[]
for cnt in range(5):
    t=threading.Thread(target=go)
    T.append(t)
    t.start()

for t in T:
    t.join()
end=time.time()
print('執(zhí)行時(shí)間:',end-start,'秒')
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Python語言特性 1 Python的函數(shù)參數(shù)傳遞 看兩個(gè)如下例子,分析運(yùn)行結(jié)果: 代碼一: a = 1 def...
    伊森H閱讀 3,175評論 0 15
  • 又別三月 蒼穹之外 寂靜星空 一片深邃遼遠(yuǎn) 月光皎潔 熙攘熙攘的 是另外一個(gè)世界 相愛,離別 悲喜,聚散 種種因果...
    小魚_bac1閱讀 285評論 0 0
  • http://www.lz13.cn/我一直關(guān)注的一個(gè)網(wǎng)站,此文轉(zhuǎn)至這里。 20歲,沒有錯(cuò)付的人三毛與荷西初次相遇...
    eakbmvjaas閱讀 203評論 0 0
  • 凌晨四點(diǎn),大多數(shù)馬路上幾乎都沒有人,偶爾有幾輛車子開過,路燈下,只有環(huán)衛(wèi)工人忙碌的身影,她們用掃帚掃出了城市的整潔...
    晚霞A閱讀 1,728評論 0 0
  • 除了自渡,他人愛莫能助?!?今天聽到了一個(gè)BGM,然后找到了那首歌《第三人稱》,緊接著又找到了一部電視劇《北...
    我看到自己都上火閱讀 504評論 0 0

友情鏈接更多精彩內(nèi)容