Python3+Beautiful Soup4+Selenium爬蟲,爬取網站視訊
阿新 • • 發佈:2019-01-25
其中有個使用瀏覽器的步驟需要根據報錯的提示,下載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)
僅供參考,具體程式碼還要根據你要爬取的網站的結構修改。如果發現什麼問題,或者有什麼更好的建議,歡迎評論!