Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Selenium Chrome web驱动程序在网页上不一致地执行JS脚本_Python_Selenium_Selenium Webdriver_Beautifulsoup_Python Requests Html - Fatal编程技术网

Python Selenium Chrome web驱动程序在网页上不一致地执行JS脚本

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版本 我还试图通

我正试图在PubChem上搜刮文章,例如。PubChem要求浏览器启用Javascript,否则它会重定向到一个几乎没有内容的页面,上面写着“此应用程序需要Javascript。请打开Javascript以使用此应用程序”。为了解决这个问题,我使用Selenium库中的Chrome web驱动程序来获取PubChem使用JavaScript生成的HTML

大约有一半的时间是这样的。它还经常不呈现完整的html,并重定向到Javascript警告页面。如何使脚本一致地检索站点的JS版本

我还试图通过使用PhantomJS来克服这个问题,但PhantomJS在安装后不知何故无法在我的机器上工作

从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,我会得到一个渲染。我还更新了答案中的案例。请让我知道,如果你能提供任何意见,因为这将是非常有用的。非常感谢。