我正在开发一个web scraper来从html文件中的源标记收集src链接并将其添加到列表中。
该网站的视频嵌套在一堆div下,但所有网页最终都会出现:
<video type="video/mp4" poster="someimagelink" preload="metadata" crossorigin="anonymous">
<source type="video/mp4" src="somemp4link">
</video>
我目前的方法是登录网站,转到包含视频页面链接的页面,逐个访问每个视频页面并尝试查找源标记并将其添加到列表中。
import time
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
browser = webdriver.Firefox()
# A bunch of log in and get list of video page links, which works fine
soup = BeautifulSoup(browser.page_source)
for i in range(3):
browser.get(soup('a', {'class', 'subject__item'})[i]['href'])
vsoup = BeautifulSoup(browser.page_source)
print(vsoup('source'))
browser.get('pageWithVideoPages')
# This doen't add to a list, it just goes to the video page,
# tries to find the source tag and print it out.
# Then go back to original page and start loop again.
但是我得到了这个:
[<source src="themp4link" type="video/mp4"></source>]
[]
[]
[]
所以第一个工作正常,然后所有其余的只返回黑名单......好像没有源标记,但是手动检查检查员会发现那里有源标记。
重复这一点,我现在得到:
[<source src="http://themp4link" type="video/mp4"></source>]
[]
[<source src="http://themp4link" type="video/mp4"></source>]
该网站需要启用javascript才能加载内容(这就是我使用webdriver执行此操作的原因)...这可能与此有关吗?
非常感谢任何帮助!
答案 0 :(得分:1)
您可能需要等待所需的网络元素。您应该使用WebDriverWait进行探索。