Python Selenium Chrome web驱动程序在网页上不一致地执行JS脚本
我正试图在PubChem上搜刮文章,例如。PubChem要求浏览器启用Javascript,否则它会重定向到一个几乎没有内容的页面,上面写着“此应用程序需要Javascript。请打开Javascript以使用此应用程序”。为了解决这个问题,我使用Selenium库中的Chrome web驱动程序来获取PubChem使用JavaScript生成的HTML 大约有一半的时间是这样的。它还经常不呈现完整的html,并重定向到Javascript警告页面。如何使脚本一致地检索站点的JS版本 我还试图通过使用PhantomJS来克服这个问题,但PhantomJS在安装后不知何故无法在我的机器上工作Python Selenium Chrome web驱动程序在网页上不一致地执行JS脚本,python,selenium,selenium-webdriver,beautifulsoup,python-requests-html,Python,Selenium,Selenium Webdriver,Beautifulsoup,Python Requests Html,我正试图在PubChem上搜刮文章,例如。PubChem要求浏览器启用Javascript,否则它会重定向到一个几乎没有内容的页面,上面写着“此应用程序需要Javascript。请打开Javascript以使用此应用程序”。为了解决这个问题,我使用Selenium库中的Chrome web驱动程序来获取PubChem使用JavaScript生成的HTML 大约有一半的时间是这样的。它还经常不呈现完整的html,并重定向到Javascript警告页面。如何使脚本一致地检索站点的JS版本 我还试图通
从bs4导入美化组
从请求导入获取
从请求\u html导入HTMLSession
从selenium导入webdriver
导入html5lib
session=HTMLSession()
browser=webdriver.Chrome(“/Users/user/Documents/chromedriver”)
url=”https://pubchem.ncbi.nlm.nih.gov/compound/"
browser.get(url)
innerHTML=browser.execute\u脚本(“returndocument.body.innerHTML”)
soup=BeautifulSoup(innerHTML,“html5lib”)
没有任何错误消息。唯一的问题是,有时web scraper无法按预期获得JS呈现的网页。非常感谢你 回答我自己的问题,因为为什么不呢 您需要在之前退出浏览器
browser=webdriver.Chrome(“/Users/user/Documents/chromedriver”)
#东西
browser.quit()
并在涉及浏览器的最后一个操作之后立即执行,因为在运行脚本的下一次迭代中,浏览器缓存可能会影响输出
希望任何有这个问题的人都会觉得这很有帮助
更新编辑:
因此,关闭浏览器确实会增加成功的频率,但不会使其保持一致。另一件有助于提高其工作频率的事情是运行
sudo清除
在候机楼。然而,我仍然没有得到一致的结果。如果有人知道如何不使用暴力(即打开和关闭WebDriver,直到它呈现正确的页面),请让我知道!非常感谢您回答我自己的问题,因为为什么不呢 您需要在之前退出浏览器
browser=webdriver.Chrome(“/Users/user/Documents/chromedriver”)
#东西
browser.quit()
并在涉及浏览器的最后一个操作之后立即执行,因为在运行脚本的下一次迭代中,浏览器缓存可能会影响输出
希望任何有这个问题的人都会觉得这很有帮助
更新编辑:
因此,关闭浏览器确实会增加成功的频率,但不会使其保持一致。另一件有助于提高其工作频率的事情是运行
sudo清除
在候机楼。然而,我仍然没有得到一致的结果。如果有人知道如何不使用暴力(即打开和关闭WebDriver,直到它呈现正确的页面),请让我知道!非常感谢尝试
browser.page\u source
。比如soup=BeautifulSoup(browser.page\u source,“html5lib”)
@KunduK,它的功能与我的代码完全相同如果您能提及您的预期输出,其他贡献者可能会对您有所帮助吗?谢谢@KunduK!我刚刚解决了这个问题,并在答案中写下了解决方案。@KunduK经过一些成功的尝试,这个问题仍然存在。我希望进行刮取,但如果在开发人员控制台中禁用JS,我会得到一个渲染。我还更新了答案中的案例。请让我知道,如果你能提供任何意见,因为这将是非常有用的。非常感谢。尝试browser.page\u source
。比如soup=BeautifulSoup(browser.page\u source,“html5lib”)
@KunduK,它的功能与我的代码完全相同如果您能提及您的预期输出,其他贡献者可能会帮助您吗?谢谢@KunduK!我刚刚解决了这个问题,并在答案中写下了解决方案。@KunduK经过一些成功的尝试,这个问题仍然存在。我希望进行刮取,但如果在开发人员控制台中禁用JS,我会得到一个渲染。我还更新了答案中的案例。请让我知道,如果你能提供任何意见,因为这将是非常有用的。非常感谢。