使用BeautifulSoup无法提取Facebook视频URL的技术求助
获取Facebook视频真实下载链接的Python实现问题
我编写了一个Python路由函数,向fbdown.net网站传入Facebook视频链接参数,该网站会返回包含视频真实下载URL的HTML页面,我需要解析此HTML获取下载链接。
尝试一:使用BeautifulSoup(失败)
调用路由函数时,返回的是标题为Just a moment的错误HTML页面,即使添加延迟后问题依旧。代码如下:
@app.route('/downloadS', methods=['GET']) def download_video_S(): # 从GET请求中获取视频链接 video_link = request.args.get('link') # 向下载页面发送GET请求 response = requests.get('https://fdown.net/download.php', params={'URLz': video_link}) time.sleep(30) # 用BeautifulSoup解析HTML响应 soup = BeautifulSoup(response.content, 'html.parser') print(soup) # 查找SD和HD下载链接 sd_link = soup.find('a', {'id': 'sdlink'})['href'] hd_link = soup.find('a', {'id': 'hdlink'})['href'] # 将链接以JSON格式返回 response = {'sd_link': sd_link, 'hd_link': hd_link} return jsonify(response)
尝试二:使用Selenium(功能正常但有浏览器弹窗问题)
该方法能正常获取到下载链接,但运行时会打开Chrome浏览器,我希望实现无界面仅提取视频真实下载URL。代码如下:
@app.route('/downloadFace', methods=['GET']) def download_video_Face(): # 从GET请求中获取视频链接 video_link = request.args.get('link') driver = webdriver.Chrome() # Chrome配置项(已注释) # chrome_options = Options() # chrome_options.add_argument("--headless") # 启用无头模式,不打开浏览器 # # 应用配置项初始化驱动 # 加载网站页面 driver.get("https://fdown.net/") # 找到输入框并填入视频链接 input_field = driver.find_element(By.NAME, "URLz") input_field.send_keys(video_link) # 找到下载按钮并点击 download_button = driver.find_element(By.XPATH, "//button[@type='submit']") download_button.click() # 等待下载链接加载完成 driver.implicitly_wait(10) # 获取SD和HD下载链接 sd_link = driver.find_element(By.ID, "sdlink").get_attribute("href") hd_link = driver.find_element(By.ID, "hdlink").get_attribute("href") # 关闭驱动 driver.quit() # 将链接以JSON格式返回 response = {'sd_link': sd_link, 'hd_link': hd_link} return jsonify(response)
关键问题说明
- 尝试一中的
time.sleep(30)无效,因为延迟是在请求发送后执行,无法等待网站的反爬验证流程;且网站可能通过反爬机制识别出非浏览器请求,返回验证页面。 - 尝试二中只需启用已注释的无头模式配置,即可实现无界面运行。
内容的提问来源于stack exchange,提问作者Tanvi Verma
相关产品推荐
相关产品推荐

