如果通过 python selenium 和美丽的汤嵌套在视频内的源标签内,则无法抓取 src
Posted
技术标签:
【中文标题】如果通过 python selenium 和美丽的汤嵌套在视频内的源标签内,则无法抓取 src【英文标题】:Unable to scrape the src if it is nested inside the source tag inside video via python selenium and beautiful soup 【发布时间】:2022-01-04 05:34:45 【问题描述】:我正在抓取一个动漫网站作为一个项目,但是当我试图抓取 src 时,它给了我一个错误。 src 嵌套在源标签内。我在下面给出截图和代码。
example screenshot
代码:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup
import re
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
#launch url
url = "https://bestdubbedanime.com/Demon-Slayer-Kimetsu-no-Yaiba/26"
# create a new Firefox session
driver = webdriver.Firefox()
# driver.implicitly_wait(30)
driver.get(url)
# python_button = driver.find_element_by_class_name('playostki') #FHSU
# python_button.click() #click fhsu link
soup1 = BeautifulSoup(driver.page_source, 'html.parser')
video = soup1.find('video', id='my_video_1_html5_api')
# video = driver.find_element_by_id('my_video_1_html5_api')
WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".playostki"))).click()
driver.stop_client
driver.close
driver.quit
【问题讨论】:
【参考方案1】:没有获取到src标签的原因,是因为点击视频后才显示。您必须先点击该视频,然后尝试从元素中找到“src”属性。
driver.maximize_window()
driver.get("https://bestdubbedanime.com/Demon-Slayer-Kimetsu-no-Yaiba/26")
WebDriverWait(driver, 60).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='playostki']//img"))).click()
print(WebDriverWait(driver, 60).until(EC.presence_of_element_located((By.CSS_SELECTOR, "#my_video_1_html5_api > source"))).get_attribute("src"))
driver.quit()
输出:
https://bestdubbedanime.com/xz/api/v.php?u=eVcxb0ZCUEMraFd1Vi9pM2xqWUhtbXZMWjZ0Mlpoc1U0Tmhqc2VFcVViQUc3VUVhR0pZV1EvaW1nY1duaXBMeXYvUUY4RG5ab3p4MEtEMUFHRmVaN0taVG9sY3ZVcTRoeDZoVHhWLzdiYjQ5UStNN2FYSjJBSWNKL0t5S1hLNGEyVlZqV1BYQ2MwaCsyNWcvak1Db01EMnNtWGwwTTBBVld4MkNER0V3eGNCRXJ0cEY4RHFPclhwbTJpWFBPSmJI
【讨论】:
非常感谢。但是你能告诉我为什么我的代码不起作用,因为我也点击了按钮。不过谢谢 因为你的 css 定位器不正确。它突出显示页面上的多个元素。 哦,谢谢。我也可以减少时间吗? 是的,这是明确的等待。这意味着,最多将等待 60 秒。如果元素将在 2 秒后出现,则不会等待 60 秒。它将在 2 秒内执行。但最长会等待 60 秒。 @QualityMatters 另外记得在使用WebDriverWait()
时劝阻implicitly_wait()
以上是关于如果通过 python selenium 和美丽的汤嵌套在视频内的源标签内,则无法抓取 src的主要内容,如果未能解决你的问题,请参考以下文章
[美丽的汤料,使用Python到MySQL。如果字符串包含,则继续执行其他操作
通过 Selenium 和 Python 和 JavaScript 使 WebElement 可见