gpt4 book ai didi

javascript - 通过 Selenium 抓取动态内容?

转载 作者:太空宇宙 更新时间:2023-11-04 16:07:42 24 4
gpt4 key购买 nike

我正在尝试从 Blog 中删除动态内容通过 Selenium 但它总是返回未呈现的 JavaScript。

为了测试这种行为,我尝试等到 iframe 完全加载并打印它的内容,打印效果很好,但当我回到父框架时,它再次显示未呈现的 JavaScript。

我正在寻找能够打印完全呈现的 HTML 内容的东西

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

driver = webdriver.Chrome("path to chrome driver")
driver.get('http://justgivemechocolateandnobodygetshurt.blogspot.com/')

WebDriverWait(driver, 40).until(expected_conditions.frame_to_be_available_and_switch_to_it((By.ID, "navbar-iframe")))

# Rendered iframe HTML is printed.
content = driver.page_source
print content.encode("utf-8")

# When I switch back to parent frame it again prints non rendered JavaScript.
driver.switch_to.parent_frame()
content = driver.page_source
print content.encode("utf-8")

最佳答案

问题是 - the .page_source works only in the current context .有那个 "current top-level browsing context" notation..Meaning,如果你在默认内容上调用它 - 你不会得到子 iframe 元素的内部 HTML - 为此你必须切换到 的上下文frame 并调用 .page_source

换句话说,要获得页面的非常完整的 HTML,包括 iframe 的页面源代码,您必须一个接一个地切换到 iframe 上下文并分别获取源代码。

另见:


旧答案:

我会 wait在获取 page_source 之前至少加载一个博客条目:

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

wait = WebDriverWait(driver, 40)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".entry-content")))

print(driver.page_source)

关于javascript - 通过 Selenium 抓取动态内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36779288/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com