猿问

Browsermob selenium python - JSONDecodeError

尝试在 Python 中使用带有 selenium 的 browsermob-proxy 获取一堆 url 的 HAR 文件。对于基本实现,我使用Browsermob 文档中的示例代码。我的代码如下


from browsermobproxy import Server

import psutil

import time


server = Server(“/path/to/bin/browsermob-proxy")

server.start()

proxy = server.create_proxy()


from selenium import webdriver

profile  = webdriver.FirefoxProfile()

profile.set_proxy(proxy.selenium_proxy())

driver = webdriver.Firefox(firefox_profile=profile)


proxy.new_har(“google”) 

driver.get("http://www.google.com")

print(proxy.har) #ISSUE IN THIS LINE


server.stop()

driver.quit()

我能够初始化 browsermob-proxy,并让 selenium 在 firefox(和 chrome)上打开页面。当它到达“proxy.har”行时,它会抛出一个 JSONDecodeError: Expecting value: line 1 column 1 (char 0)


下面的错误跟踪


JSONDecodeError                           Traceback (most recent call last)

<ipython-input-2-f690bb4c2c08> in <module>()

----> 1 proxy.har


~/anaconda3/lib/python3.6/site-packages/browsermobproxy/client.py in har(self)

    102         r = requests.get('%s/proxy/%s/har' % (self.host, self.port))

    103 

--> 104         return r.json()

    105 

    106     def new_har(self, ref=None, options=None, title=None):


~/anaconda3/lib/python3.6/site-packages/requests/models.py in json(self, **kwargs)

    890                     # used.

    891                     pass

--> 892         return complexjson.loads(self.text, **kwargs)

    893 

    894     @property

我已经尝试了很多方法来解决此问题,但无法使其正常工作

  • GET 请求返回 200

  • 尝试了一些 json 函数来加载或解析为 utf-8 或去除无效字符

  • 试过 simplejson

  • 尝试更改 browsermob 端口

  • 在不同的网络上尝试,以防阻止是由代理设置引起的

无论我尝试什么,我都会遇到同样的错误。我最初认为问题出在我的安装上。我是这样做的:

  1. 使用 pip3 安装硒(使用 python 3.6 和 Jupyter/iPython)

  2. https://bmp.lightbody.net/下载 browsermob 二进制文件

  3. 下载 geckodriver

  4. 在 /bin 中使用 ./browsermob-proxy 启动代理,并尝试使用 -port 选择端口

任何人都遇到过类似的问题,他们使用上述问题以外的任何方法解决了这些问题?


九州编程
浏览 360回答 2
2回答

MMMHUHU

问题是“browsermob-proxy”包与您的 Python 版本不兼容。该包是为 Python 2.x 编写的,而您使用的是 Python 3.6。

红颜莎娜

在 OSX 10.14 上运行 Python 3.6 时,我遇到了同样的问题。通过切换到 Python 3.7 解决 - 适用于 Linux 和 Mac。
随时随地看视频慕课网APP

相关分类

Python
我要回答