【问题标题】:driver.get() takes too much time - Python Selenium PhantomJsdriver.get() 花费太多时间 - Python Selenium PhantomJs
【发布时间】:2017-05-05 09:21:54
【问题描述】:

我正在使用 python 和 selenium-Phantomjs 来执行一些 url。但是当它转到driver.get(url) 时,它就卡在了那里。当我使用 chrome 代替它时,它工作得非常好。

from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium import webdriver
import time

dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = (
    "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/53 (KHTML, like Gecko) Chrome/56.0.2924.87")

def Foo(url):
    try:
        driver = webdriver.PhantomJS(desired_capabilities=dcap,service_args=['--ignore-ssl-errors=true'])
        # chromedriver = "/Documents/chromedriver"
        # os.environ["webdriver.chrome.driver"] = chromedriver
        # driver = webdriver.Chrome(executable_path=r"Path To Chrome Driver")
        driver.get(url)
        time.sleep(8)
        status = "successful"
    except (Exception) as e:
        print(e)
        status = "unsuccessful"
        driver.close()
    return status

url ="https://www.zomato.com/clients/reviews_new.php?entity_type=restaurant&entity_id=53892&start_date=2012-01-01&end_date=2017-05-05"
status = Foo(url)
print(status)

任何建议都会有所帮助。

【问题讨论】:

    标签: python selenium flask phantomjs


    【解决方案1】:

    好的,我自己找到了替代方案。我只是使用了无头 chrome 而不是 phantomjs。

    from selenium import webdriver
    from pyvirtualdisplay import Display
    import time,os
    
    display = Display(visible=0, size=(800, 600))
    display.start()
    
    def Foo(url):
        try:
            driver = webdriver.Chrome()
            driver.maximize_window()
            driver.get(url)
            time.sleep(8)
            status = "successful"
        except (Exception) as e:
            print(e)
            status = "unsuccessful"
            #driver.close()
        return status
    
    url ="https://www.zomato.com/clients/reviews_new.php?entity_type=restaurant&entity_id=53892&start_date=2012-01-01&end_date=2017-05-05"
    status = Foo(url)
    print(status)
    

    但首先您必须安装 xvfb 才能无头运行 chrome。您可以使用sudo apt-get install xvfb 安装它。您还需要安装 pyvirtualdisplay 包。这可以通过pip3 install pyvirtualdisplay 完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-02
      相关资源
      最近更新 更多