1

我正在尝试构建一个自动化工具来验证 Web 分析标签的实现。我正在使用 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

实例化 webdriver 的代码

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
4

1 回答 1

0

遵循安德森 的建议,我设法得到了我所期待的结果。我已经在无头模式下从 PhantomJS 更改为 Chrome webdrive。

于 2018-04-06T16:47:53.387 回答