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)

仅供参考,具体代码还要根据你要爬取的网站的结构修改。如果发现什么问题,或者有什么更好的建议,欢迎评论!

你可能感兴趣的:(爬虫,python)