我想检索网页的所有可见内容。比如说,例如this网页。我用硒远程使用无头Firefox浏览器。使用硒和BeautifulSoup获取页面的可见内容
脚本我使用看起来像这样
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
有关?
这是我第一次学尝试,但它不是正常工作,因为该项目在实际上完全加载之前可能会出现。我猜这个等待页面加载的整个主题是错综复杂的,但是我通过检查iframe的readyState来解决它。 – LetsPlayYahtzee
非常好。它可能在未来帮助我。谢谢 –
我提供了我的解决方案,检查波纹管 – LetsPlayYahtzee