我想檢索網頁的所有可見內容。比如說,例如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