为什么我找不到Python和Selenium的html元素?

2024-05-13 10:51:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python和Selenium有一个奇怪的问题。我正在访问URLhttps://www.biggerpockets.com/users/JarridJ1。单击“更多”时,将显示更多内容。我可以理解这是一个基于React的网站。当我在浏览器和doaview Source上查看它时,我可以在react元素<div data-react-class="Profile/Header/Header" data-react-props="{&quot中看到所需的内容。我试图通过Selenium自动化Firefox,但我甚至无法实现。 查看屏幕截图:

enter image description here 下面是我尝试的代码:

from time import sleep

from selenium import webdriver
from selenium.webdriver.chrome.options import Options


def parse(u):
    print('Processing... {}'.format(u))
    driver.get(u)
    sleep(2)
    html = driver.page_source
    driver.save_screenshot('bp.png')
    print(html)


if __name__ == '__main__':
    options = Options()
    options.add_argument("--headless")  # Runs Chrome in headless mode.
    options.add_argument('--no-sandbox')  # Bypass OS security model
    options.add_argument('--disable-gpu')  # applicable to windows os only
    options.add_argument('start-maximized')  #
    options.add_argument('disable-infobars')
    options.add_argument("--disable-extensions")
    driver = webdriver.Firefox()
    parse('https://www.biggerpockets.com/users/JarridJ1')

Tags: fromimportcomaddwwwdriverseleniumargument
1条回答
网友
1楼 · 发布于 2024-05-13 10:51:19

这是一个棘手的问题,但我找到了一种方法来访问您突出显示的元素。仍然不确定为什么driver.page_source没有返回您正在寻找的内容

def parse(u):
    print('Processing... {}'.format(u))
    driver.get(u)
    sleep(2)
    get_everything = driver.find_elements_by_xpath("//*")
    for element in get_everything:
        print(element .get_attribute('innerHTML'))

    #html = driver.page_source
    #driver.save_screenshot('bp.png')
    #print(html)

以下是我的独立示例:

from selenium import webdriver
import time


driver = webdriver.Chrome("C:\Path\To\chromedriver.exe")
driver.get("https://www.biggerpockets.com/users/JarridJ1")
time.sleep(5)
a = driver.find_element_by_xpath("//div[@data-react-class='Profile/Header/Header']")
b = a.get_attribute("data-react-props")
print(b)
c = driver.find_elements_by_xpath("//*")
for i in c:
    print(i.get_attribute('innerHTML'))

相关问题 更多 >