日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python3,多线程爬取某瓣小电影~ ~

發(fā)布時間:2023/12/16 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python3,多线程爬取某瓣小电影~ ~ 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

python3 爬取豆瓣電影

  • 直接爬取豆瓣
  • 使用線程池爬取豆瓣

由于今年的疫情原因,我們不能到電影院消費,就無法體驗右手牽女友,左手牽女友閨蜜的樂趣。
但是,即使在家里,也得撒一波…

直接爬取豆瓣

以上說的都不是重點,重點是,我們要看看怎么爬…
別想歪了,我們是爬取網(wǎng)站的電影,不是爬山哈 !!
先看一下豆瓣網(wǎng),每頁顯示的電影數(shù)量

這里直接上代碼,我們不用線程池,看看,10頁電影圖片,需要多少時間

# -*- coding: utf-8 -*- """ @ auth : carl_DJ @ time : 2020-8-14 """import os import time import requests from bs4 import BeautifulSoup from urllib.request import urlretrieve from concurrent.futures import ThreadPoolExecutor ,wait,ALL_COMPLETEDdouban_path = '../py_class/pict' if not os.path.exists(douban_path):os.mkdir(douban_path)def down_load(url):#添加請求頭信息,防止被網(wǎng)站屏蔽掉headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'}r = requests.get(url,headers=headers)soup = BeautifulSoup(r.text,'lxml')#找到當前頁面所有圖片的父divcontent = soup.find('div',class_= 'article') #獲取所有電影圖片的標簽images = content.find_all('img')#所有圖片的下載鏈接pic_link_list = [image['src'] for image in images] #獲取所有圖片的名字 pic_name_list =[image['alt'] for image in images] for name,link in zip(pic_name_list,pic_link_list):#urlretrieve暫時對 python3.7的支持,不太穩(wěn)定,運行時報錯,# urlretrieve(link,f'{douban_path}/{name}.jpg')#運用老方法來讀寫html = requests.get(link)with open(f'{douban_path}/{name}.jpg','wb') as f :f.write(html.content)print(f'{url}所有電影下載完成')def main():stat_urls = ['https://movie.douban.com/top250',]#使用參數(shù)start={25*i},因為每頁顯示25個電影for i in range(1,10):stat_urls.append(f'https://movie.douban.com/top250?start={25*i}&filter=')# print(stat_urls)#開始時間start_time = time.time()#執(zhí)行下載動作for url in stat_urls:down_load(url)#結(jié)束時間end_time = time.time()print('='*50)print(f'運行時按{end_time - start_time}')if __name__ == '__main__':main()

我們尋找class = ‘a(chǎn)rticle’ 這邊標簽

content = soup.find('div',class_= 'article')

是因為 我們要爬取的各個電影的圖片,是class = ‘a(chǎn)rticle’ 的子類

有句老話說的好:找到了老子, 還怕找不到小子嗎??


最后,爬取的時間 是 49s+

使用線程池爬取豆瓣

我們要看看,使用多線程,到底能提速多少

""" @ auth : carl_DJ @ time : 2020-8-14 """import os import time import requests from bs4 import BeautifulSoup from urllib.request import urlretrieve from concurrent.futures import ThreadPoolExecutor ,wait,ALL_COMPLETEDdouban_path = '../py_class/pict' if not os.path.exists(douban_path):os.mkdir(douban_path)def down_load(url):headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'}r = requests.get(url,headers=headers)soup = BeautifulSoup(r.text,'lxml')#找到當前頁面所有圖片的父divcontent = soup.find('div',class_= 'article') #獲取所有電影圖片的標簽images = content.find_all('img')#所有圖片的下載鏈接pic_link_list = [image['src'] for image in images] #獲取所有圖片的名字 pic_name_list =[image['alt'] for image in images] for name,link in zip(pic_name_list,pic_link_list):#urlretrieve暫時對 python3.7的支持,不太穩(wěn)定,運行時報錯,# urlretrieve(link,f'{douban_path}/{name}.jpg')#運用老方法來讀寫html = requests.get(link)with open(f'{douban_path}/{name}.jpg','wb') as f :f.write(html.content)print(f'{url}所有電影下載完成')def main():stat_urls = ['https://movie.douban.com/top250',]for i in range(1,10):stat_urls.append(f'https://movie.douban.com/top250?start={25*i}&filter=')# print(stat_urls)#開始時間start_time = time.time()#定義10個線程with ThreadPoolExecutor(max_workers=10) as executor:futures = [] #獲取運行結(jié)果for url in stat_urls:future = executor.submit(down_load,url)futures.append(future)#等到所有線程執(zhí)行完成,在進行后續(xù)邏輯wait(futures,return_when=ALL_COMPLETED)#結(jié)束時間end_time = time.time()print('='*50)#打印時間差print(f'運行時按{end_time - start_time}')if __name__ == '__main__':main()

我們看看運行結(jié)果,20s+,確實提速很多,所以,能多線程,就別單線程,讓更多的資源動起來,動起來~ ~

最后給大家看一下,爬取的圖片 是啥樣子的

電影的圖片名字都會顯示。
????乛?乛????
最后,希望大家都能爬到自己想要的小電影~ ~
但是,還得提醒一下:

適當?shù)目梢遭?#xff0c;過多就傷身了啊~

總結(jié)

以上是生活随笔為你收集整理的Python3,多线程爬取某瓣小电影~ ~的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。