【发布时间】: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