天天看点

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文件,利用迅雷的批量下载功能进行下载。只要你的硬盘足够大,世界都能装的下!

好了,我们下期见。

继续阅读