![](/img/trans.png)
[英]Python Selenium PhantomJS Returns Empty Source After Clicking An Element
[英]Selenium Python Empty return after page update
我正在使用 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。
使用 Web 驱动程序直接访问元素:
driver.find_element_by_css_selector('.Collapsible__contentInner')
然后,您可以访问该元素的内容或属性,请参阅 selenium 停靠栏。
首先获取页面的所有 HTML 源代码,然后抓取一些元素属性并不是一个非常明智的想法。 尽管如此,如果您想使用page_source获取页面的 HTML 源代码并不是一个非常可靠的想法,因为它不能保证它会返回页面 HTML 源代码的当前状态。 而是使用如下所示的 JavaScript outerHTML:
html = driver.execute_script("return document.documentElement.outerHTML")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.