lihu5841314 发表于 2021-9-2 16:45

selenium 解析网站电影下载

from   seleniumimportwebdriver
fromselenium.webdriver.common.by importBy
fromselenium.webdriver.support.wait import WebDriverWait
fromselenium.webdriver.supportimport expected_conditionsasEC
importrequests,time,tqdm


headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36',
}
defget_url():
    # 实例化浏览器对象
    driver = webdriver.Chrome(executable_path=r"C:\Program Files\Google\Chrome\Application\chromedriver.exe")
    foriinrange(3):
      try:
            driver.get(url)
            wait = WebDriverWait(driver,10)
            wait.until(EC.presence_of_element_located((By.ID,"PLAYERS")))
            iframe = driver.find_element_by_id("PLAYERS")
            #进入嵌套网页
            driver.switch_to.frame(iframe)
            wait.until(EC.presence_of_element_located((By.CLASS_NAME, "dplayer-video")))
            mov_url = driver.find_element_by_class_name("dplayer-video").get_attribute('src')
            ifmov_url!="":
                driver.quit()#退出浏览器
                return mov_url
            else:
                driver.quit()#退出浏览器
                time.sleep(2)
                print("正在重新请求")
                continue
      except:
            print("发生错误,正在重新请求")
            driver.quit()#退出浏览器
            continue

#请求函数
defhtml_response(url):
    foriin range(3):
      try:
             resp = requests.get(url,headers=headers,stream=True,timeout=20) # stream(可选)如果为“False”,响应内容将被立即下载
             if resp.status_code ==200:
               returnresp
      except Exception:
            print(Exception)
            time.sleep(2)
            print("正在重新请求")
            continue


#添加进度条和下载
defmov_down(url):
   resp =html_response(url)
   #视频长度
   file_size = int(resp.headers.get('Content-Length'))
   print(file_size)
   #初始化进度条长度
   pbar = tqdm.tqdm(total=file_size)
   with open('电影下载.mp4','wb')asf:
         for chunk inresp.iter_content(1024*1024*2):
            f.write(chunk)
            pbar.set_description("正在下载中")#设置修改进度条的描述。参数
            pbar.update(1024*1024*2)   #手动更新进度条,对读取文件等流很有用



if __name__ == '__main__':
    jx_url=input("请输入需要解析的网址:")
    ifjx_url!="":
      url = f"https://jx.aidouer.net/?url={jx_url}"
      mov_url = get_url()
      print(mov_url)
      mov_down(mov_url)
      print("下载完成")

努力的笨蛋 发表于 2021-9-2 17:29

用的是you-get,没接触过这个,一脸茫然。

aonima 发表于 2021-9-2 18:38

试试好不好用

414246704 发表于 2021-10-5 08:41

这个我也很喜欢,老看一些VIP电影,可现在这些解析网站也不让下载了,用了你这个代码,出错完全看不懂是哪的原因,输入VIP链接后 一个黑CMD框出现几十秒就不见了,然后恢复正常和没操作一样了。如果你有时间的话请帮我看看这是什么原因。

Jack2002 发表于 2021-10-5 11:21

学习 pyppeteer 就行了 selenium 老了些,这东西也不是万能的,也不是爬虫的核心,更不是精髓,很多网站用这两东西浏览器会被强制关闭!
人家这个小成本网站本身就是盗版,你去爬人家的盗版干什么呢!现在盗版也不让你爬了吧,很多片源都加密了!

qhd11 发表于 2021-10-9 14:36

爬出盗版的,意义不大。
页: [1]
查看完整版本: selenium 解析网站电影下载