我想检索网页的所有可见内容。比如说this网页。我正在远程使用带有 selenium 的 headless Firefox 浏览器。
我正在使用的脚本如下所示
driver = webdriver.Remote('http://0.0.0.0:xxxx/wd/hub', desired_capabilities)
driver.get(url)
dom = BeautifulSoup(driver.page_source, parser)
f = dom.find('iframe', id='dsq-app1')
driver.switch_to_frame('dsq-app1')
s = driver.page_source
f.replace_with(BeautifulSoup(s, 'html.parser'))
with open('out.html', 'w') as fe:
fe.write(dom.encode('utf-8'))
这应该加载页面,解析 dom,然后将 id 为 dsq-app1
的 iframe 替换为其可见内容。如果我通过 python 命令行一一执行这些命令,它会按预期工作。然后我可以看到包含所有可见内容的段落。相反,当我通过执行脚本或将所有这些代码片段粘贴到解释器中来一次执行所有这些命令时,它的行为会有所不同。段落丢失了,内容仍然以json格式存在,但这不是我想要的。
知道为什么会发生这种情况吗?也许与replace_with
有关?
最佳答案
关于python - 使用 selenium 和 BeautifulSoup 获取页面的可见内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39849497/