微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

页面更新后,Selenium Python空返回

如何解决页面更新后,Selenium Python空返回

我正在将Selenium Python和BeautifulSoup一起使用来抓取数据。 单击“实时”按钮后,我需要网站的html。我正在单击按钮,但是新的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>

解决方法

不要使用page_source。

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

driver.find_element_by_css_selector('。Collapsible__contentInner')

然后您可以访问该元素的内容或属性,请参阅硒底座。

,

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

html = driver.execute_script("return document.documentElement.outerHTML")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。