1. 程式人生 > >Python3+Beautiful Soup4+Selenium爬蟲,爬取網站視訊

Python3+Beautiful Soup4+Selenium爬蟲,爬取網站視訊

其中有個使用瀏覽器的步驟需要根據報錯的提示,下載exe檔案,放到某個目錄,然後再修改Selenium中的原始碼,指明exe的目錄。

import bs4
import urllib.request
from selenium import webdriver
import os#需要匯入的模組,如果沒有請安裝

def convert_link(raw_link):#把連結中的轉義字元變成地址中原本的字元。
    temp = raw_link.replace("%2F", "/").replace("%3A", ":")
    end = temp.index("&d=")

    return temp[10:end]
def down_video(down_url,file_path):#下載視訊,第一個引數是下載連結,第二個是儲存路徑
    print("downloading...")
    f = urllib.request.urlopen(down_url)
    data_=f.read()
    with open(file_path,"wb") as file:
        file.write(data_)
    print("success"+file_path)

browser = webdriver.Edge()#使用selenium這個模組,這個需要下載瀏覽器驅動exe檔案,然後修改webdriver.Edge()原始碼。
url="你的url"
browser.get(url) # Load page
content=browser.page_source
bs=bs4.BeautifulSoup(content,features='lxml')#解析整個網頁

results=bs.find("div",class_="某個名字")#這個是要查到的內容的父容器,自行修改
links=[]
datas=[]
for i in results.find_all("a"):
    links.append(i.get("href"))
    datas.append(i.get("data"))#獲取連結和資料欄位

site="你的網站名"#網站的域名
down_links=[]#儲存下載的路徑

for link in links:
    browser.get(site + link)
    content=browser.page_source#再次呼叫瀏覽器載入動態網頁
    bs=bs4.BeautifulSoup(content,features="lxml")
    down_link = bs.find("a", id="downVideo").get("href")
    down_links.append(convert_link(down_link))
browser.close()#關閉瀏覽器
main_path="你的儲存路徑"#檔案儲存路徑,如果不存在就會被重建
if  not os.path.exists(main_path):
    os.makedirs(main_path)

for i,(link,data) in  enumerate(zip(down_links,datas)):
    path=main_path+"P"+str(i+1)+" "+data.replace("\n","")+".mp4"#這裡替換是因為有些標題裡面有換行符
    down_video(link,path)

僅供參考,具體程式碼還要根據你要爬取的網站的結構修改。如果發現什麼問題,或者有什麼更好的建議,歡迎評論!