程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Ten-year-old Python programmer: give me a link, there are no videos I cant crawl, only videos I cant stand

編輯:Python

文章目錄

  • 一、寫在前面
  • 二、准備工作
          • 1、使用的環境
          • 2、要用的第三方模塊
  • 三、大致流程
          • 1、網站分析(明確需求)
          • 2、代碼實現過程
  • 四、代碼展示分析

一、寫在前面

真的,為什麼別人發游戲這麼多人看,我發了兩次了加起來才一百個.

算了算了,不整游戲了,反正你們也不愛看~

今天來試試把頭條上扭腰上熱門的那些妹子爬一爬,不知道我頂不頂得住~

二、准備工作

1、使用的環境
  • python 3.8
  • pycharm 2021.2 專業版
2、要用的第三方模塊
  • selenium
  • requests
  • parsel

三、大致流程

鑒於你們不喜歡我啰嗦,但是流程呢,我還是要給你們寫出來,所以我就單獨把它列出來了.

1、網站分析(明確需求)
  1. 在視頻網頁源代碼當中找到 embedUrl 對應的鏈接;
  2. 在鏈接當中找到視頻播放地址,在元素面板當中;
  3. 發現規律 embedUrl上面的 groupby_id 其實就是當前視頻鏈接上的id,下載視頻的時候 就只需要 一個 id 就可以下載視頻;(https://www.ixigua.com/embedgroup_id=7029910152576926238)
2、代碼實現過程
  1. 構建embedUrl https://www.ixigua.com/embedgroup_id=7029910152576926238
  2. 使用selenium訪問該鏈接
  3. 提取視頻鏈接地址
  4. 拼接視頻鏈接地址
  5. 使用requests發送請求 並且獲取視頻二進制數據
  6. 保存視頻

如果大家在學習Python的過程中不知道學習方向,該怎麼學,沒有好的系統的學習資料、沒人交流解答等等,都可以私我,我都給大家准備好了.

四、代碼展示分析

首先導入一下模塊

import requests
from selenium import webdriver

進入浏覽器設置

options = webdriver.ChromeOptions()

1、構建embedUrl https://www.ixigua.com/embedgroup_id=7029910152576926238

group_id = input("請輸入你要下載視頻的id:")
url = 'https://www.ixigua.com/embed?group_id=' + group_id

無頭浏覽器

options.add_argument("--headless")

加一個偽裝

options.add_argument('User-Agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"')

2、使用selenium訪問該鏈接
driver: 浏覽器

driver = webdriver.Chrome(executable_path="chromedriver.exe", options=options)

打開一個網頁
驅動配置: 代碼操作浏覽器的一個中間人

driver.get(url)

隱式等待: 最多等待五秒 如果一秒鐘加載完了 繼續執行

driver.implicitly_wait(5)

3、提取視頻鏈接地址

info = driver.find_elements_by_xpath('//*[@id="player_default"]/xg-controls/xg-definition/ul/li[1]')
video_url = info[0].get_attribute("url")

4、拼接視頻鏈接地址

video_url = 'http:' + video_url

5、使用requests發送請求 並且獲取視頻二進制數據

video_data = requests.get(video_url).content
with open('1.mp4', mode='wb') as f:
f.write(video_data)

所有代碼

import requests
from selenium import webdriver
# 進入浏覽器設置
options = webdriver.ChromeOptions()
# 1. 構建embedUrl https://www.ixigua.com/embed?group_id=7029910152576926238
group_id = input("請輸入你要下載視頻的id:")
url = 'https://www.ixigua.com/embed?group_id=' + group_id
# 無頭浏覽器
options.add_argument("--headless")
# 加一個偽裝
options.add_argument('User-Agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"')
# 2. 使用selenium訪問該鏈接
# driver: 浏覽器
driver = webdriver.Chrome(executable_path="chromedriver.exe", options=options)
# 打開一個網頁
# 驅動配置: 代碼操作浏覽器的一個中間人
driver.get(url)
# 隱式等待: 最多等待五秒 如果一秒鐘加載完了 繼續執行
driver.implicitly_wait(5)
# 3. 提取視頻鏈接地址
info = driver.find_elements_by_xpath('//*[@id="player_default"]/xg-controls/xg-definition/ul/li[1]')
video_url = info[0].get_attribute("url")
# 4. 拼接視頻鏈接地址
video_url = 'http:' + video_url
# 5. 使用requests發送請求 並且獲取視頻二進制數據
video_data = requests.get(video_url).content
with open('1.mp4', mode='wb') as f:
f.write(video_data)
print("爬取成功!!!")
#留了報錯,看看大家夠不夠機智找出來

兄弟們看完覺得有幫助,記得點贊三連哇~

先自我介紹一下,小編13年上師交大畢業,曾經在小公司待過,去過華為OPPO等大廠,18年進入阿裡,直到現在.深知大多數初中級java工程師,想要升技能,往往是需要自己摸索成長或是報班學習,但對於培訓機構動則近萬元的學費,著實壓力不小.自己不成體系的自學效率很低又漫長,而且容易碰到天花板技術停止不前.因此我收集了一份《java開發全套學習資料》送給大家,初衷也很簡單,就是希望幫助到想自學又不知道該從何學起的朋友,同時減輕大家的負擔.添加下方名片,即可獲取全套學習資料哦


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved