当前位置: 首页 > 知识库问答 >
问题:

Selenium Python页面更新后返回空

微生鸿轩
2023-03-14

我正在使用Selenium Python与美丽的汤一起刮数据。点击实时按钮后,我需要网站的html。我要点击按钮,但是新的超文本标记语言没有返回给我。我以为点击按钮后,html会很快返回,所以我睡了一觉。但即便如此,它只返回类“Collapsible__contentInner”的空div。

from bs4 import BeautifulSoup
from selenium import webdriver

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

url = 'https://www.365scores.com/pt-br/football'

web_r = requests.get(url)
web_soup = BeautifulSoup(web_r.text, 'html.parser')

driver = webdriver.Firefox()
driver.get(url)

botaoPopUp = WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH, '/html/body/div[2]/div/div[1]/div[3]/div/div[2]/div[1]/div[2]/button')))
botaoPopUp.click()

elemento = driver.find_element_by_xpath('/html/body/div[2]/div/div[1]/div[3]/div/div[2]/div/div[2]/div/div/div[1]/div/div[1]/div/div[1]')
elemento.click()

import time 
time.sleep(10)

html = driver.page_source
soup = BeautifulSoup(html, 'lxml')
dados = soup.find('div', class_="Collapsible__contentInner")
print(dados)

结果

<div class="Collapsible__contentInner"><div style="position: relative;"></div></div>

共有2个答案

傅茂实
2023-03-14

首先获取页面的所有HTML源代码,然后删除一些元素属性,这不是一个非常明智的想法。但是,如果您想使用page_source获取页面的HTML源代码,这并不是一个非常可靠的想法,因为它不能保证返回页面HTML源代码的当前状态。而是使用JavaScript outerHTML,如下所示:

html = driver.execute_script("return document.documentElement.outerHTML")
华锦程
2023-03-14

不要使用页面源。

使用web驱动程序直接访问元素:

驾驶员通过_css_选择器('.collapsable_ucontentinner')查找_元素

然后,您可以访问该元素的内容或属性,请参见selenium docks。

 类似资料:
  • 客户表中的余额分为:储值余额和盈利余额 要求下单时订单金额优先从储值余额中扣除,其次盈利余额扣除 扣除储值余额,如返回的balance小于0为待扣除金额,说明还需要扣除盈利余额: <update id="deductBalance" parameterType="com.pay.business.domain.CustomDO" > <!-- BEFORE:更新语句执行前执行selectKe

  • 本文向大家介绍js返回前一页刷新本页重载页面,包括了js返回前一页刷新本页重载页面的使用技巧和注意事项,需要的朋友参考一下

  • 问题内容: 发生更改时,如何检测对数据库的最新更新并以静默方式刷新页面? 假设数据库访问如下所示: 任何想法和样品将不胜感激。谢谢。 问题答案: 这就是我最近使用jQuery实现解决方案的方式。 每当发生 重大 更新时,PHP都会在数据库中增加一个字段。 最初加载页面时,使用数据库中的数字填充JavaScript变量:

  • 问题内容: 我试图在扭曲的python中结合这两个查询: 和: 进入单个查询。有可能这样做吗? 我尝试将SELECT放在子查询中,但我不认为整个查询都会返回我想要的内容。 有没有办法做到这一点?(甚至更好,没有子查询)还是只需要坚持两个查询? 谢谢, 泉 问题答案: 您不能直接合并这些查询。但是您可以编写一个存储过程来执行两个查询。例:

  • 我正在创建一个递归导航迷宫的程序。代码: 然而,每当我到达死胡同时,它都不会回溯。当我调试时,它表明当程序从递归或“回溯”返回时,我的起始值专注于停留在我的死胡同空间。 例如: 9是我的出发点。2是我的退出。4是我的道路。1 表示墙壁。当我到达一个死胡同时(在本例中为第 7 行,第 2 列)。我的立场是等于整个程序其余部分的死胡同空间。这是为什么呢?

  • 问题内容: 我正在使用SmoothState.js进行页面转换,它可以正常工作并使用ajax加载新页面。但是,我在每个页面上都有JS脚本需要重新初始化,而且我无法使它们始终出现在页面转换中。 根据常见问题解答: smoothState.js提供了onAfter回调函数,该函数可让您重新运行插件。如果您不熟悉AJAX的工作原理,这可能会很棘手。 当您在$(document).ready()上运行插件