【问题标题】:How to get all requests from selenium webdriver in Python如何在 Python 中从 selenium webdriver 获取所有请求
【发布时间】:2018-09-15 15:09:26
【问题描述】:

我正在尝试构建一个自动化工具来验证网络分析标签的实现。我正在使用 Python 3 + Selenium 和 PhantomJS 来自动浏览和收集正在触发的标签。 我正在使用下面的代码来抓取网页并获取包含所有请求的 har 日志,类似于 Google Chrome 中的网络选项卡所做的。问题是,对于某些网站,它运行良好,我可以看到 google-analytics.com/collect?来电。对于其他人,我可以在 Google Chrome 网络选项卡上看到它,但我的爬虫不会注册它。我确定我正在等待页面加载,但它仍然无法正常工作。

我在哪里找到分析/收集的示例页面?在 har 日志中调用: https://www.stackoverflow.com

我没有找到分析/收集的页面示例?调用 har 日志,但在 chrome 网络选项卡上找到它。 https://www.nike.com.br

实例化网络驱动程序的代码

def get_driver():
  desired_capabilities = DesiredCapabilities.PHANTOMJS.copy()
  service_args = ['--ignore-ssl-errors=yes']
  desired_capabilities['phantomjs.page.customHeaders.User-Agent'] = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
  driver = webdriver.PhantomJS(service_args=service_args,
                               desired_capabilities=desired_capabilities)
  driver.set_page_load_timeout(60)
  return driver

解析 har 日志的代码

def get_requests(url):
  driver = get_driver()
  try:
    driver.get(url)
        print(j)
  except Exception as e:
    print(e)
    return None
  log = driver.get_log('har')
  log = json.loads(log[0]['message'])
  log_list = log['log']['entries']
  return log_list

【问题讨论】:

  • 如果请求不存在,则页面没有发送它。
  • PhantomJS 的工作方式与 chromedriver 不同。此外,它不稳定,恕我直言,您根本不应该使用它。尝试改用headless Chrome
  • 消息:无效参数:找不到日志类型“har”

标签: python selenium phantomjs web-crawler har


【解决方案1】:

关注Andersson 建议,我设法得到我期望的结果。我已经在无头模式下从 PhantomJS 更改为 Chrome webdrive。

【讨论】:

    猜你喜欢
    • 2017-02-14
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    • 2013-05-22
    • 2014-03-08
    • 2015-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多