天天看點

python利用Selenium爬取電影天堂實作電影自由

作者:13妖工作室

前幾期我們實作了小說,音樂自由,當然不能少了影視自由啦,這期我們就來看看如何利用python實作電影自由。

首先老辦法我們打開電影天堂的網站,右擊檢查檢視下網站的源碼

python利用Selenium爬取電影天堂實作電影自由

經過分析後暗暗竊喜,跟之前一個套路,直接requests請求,xpth解析,資料不就手到擒來,開幹。

import requests

url="https://www.dygod.net/html/gndy/china/"
headers={
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
"cookie": "guardret=UAQF; guardret=C1c=; Hm_lvt_93b4a7c2e07353c3853ac17a86d4c8a4=1710422041; Hm_lvt_0113b461c3b631f7a568630be1134d3d=1710422041; Hm_lvt_8e745928b4c636da693d2c43470f5413=1710422041; guard=b45b4fbfCWp691; Hm_lpvt_93b4a7c2e07353c3853ac17a86d4c8a4=1710508766; Hm_lpvt_0113b461c3b631f7a568630be1134d3d=1710508766; Hm_lpvt_8e745928b4c636da693d2c43470f5413=1710508766"
}
resp=requests.get(url,headers=headers) 
print(resp.text)           

這次連user-agent,cookie 都加上應該沒問題了吧,可是一運作傻眼了。

python利用Selenium爬取電影天堂實作電影自由

網站直接傳回了一個javascript腳本,網站做了反爬,資料擷取不到了......

既然不傳回資料給我們,那我們換個思路,利用selenium所見即所的功能,直接打開網站擷取相關的資料就好了。

我們先确認下Chrome的版本:在 chrome位址欄中輸入:chrome://version/

可檢視chrome版本,根據對應的版本下載下傳驅動

https://chromedriver.storage.googleapis.com/index.html

安裝selenium

pip install selenium           

利用find_elements方法擷取對應的元素值。

find_elements(By.XPATH,'//*[@id="header"]/div/div[3]/div[4]/div[2]/div[2]/div[2]/ul/table/tbody/tr[2]/td[2]/b/a')           

運作結果如下:

python利用Selenium爬取電影天堂實作電影自由

我們利用相同的方法,循環對擷取的電影詳情頁面進行下載下傳連結的擷取。

python利用Selenium爬取電影天堂實作電影自由

以下是利用selenium擷取電影的代碼:

from selenium import webdriver
from selenium.webdriver.common.by import By
browser = webdriver.Chrome()
chrome_options = webdriver.ChromeOptions()
# 把允許提示這個彈窗關閉
prefs = {"profile.default_content_setting_values.notifications": 2}
chrome_options.add_experimental_option("prefs", prefs)
driver = webdriver.Chrome(options=chrome_options)
url = 'https://www.dygod.net/html/gndy/china/'
driver.get(url)

# 傳回所有的元素 find_elements
contents=driver.find_elements(By.XPATH,'//*[@id="header"]/div/div[3]/div[4]/div[2]/div[2]/div[2]/ul/table/tbody/tr[2]/td[2]/b/a')
#print(contents)
for i in contents:
    print(i.text, i.get_attribute('href'))           

擷取下載下傳連結的代碼同學們可以自己嘗試着寫下,把所有的連結都儲存到一個txt檔案,利用迅雷的批量下載下傳功能進行下載下傳。隻要你的硬碟足夠大,世界都能裝的下!

好了,我們下期見。

繼續閱讀