前幾期我們實作了小說,音樂自由,當然不能少了影視自由啦,這期我們就來看看如何利用python實作電影自由。
首先老辦法我們打開電影天堂的網站,右擊檢查檢視下網站的源碼
經過分析後暗暗竊喜,跟之前一個套路,直接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 都加上應該沒問題了吧,可是一運作傻眼了。
網站直接傳回了一個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')
運作結果如下:
我們利用相同的方法,循環對擷取的電影詳情頁面進行下載下傳連結的擷取。
以下是利用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檔案,利用迅雷的批量下載下傳功能進行下載下傳。隻要你的硬碟足夠大,世界都能裝的下!
好了,我們下期見。