Browsermob selenium JSONDecodeError



试图在Python中使用带硒的browsermob代理获取一堆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代理,并让selenium打开firefox(和chrome(上的页面。当它到达"proxy.har"行时,它抛出一个JSONDecodeError:期望值:第1行第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
~/anaconda3/lib/python3.6/json/__init__.py in loads(s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
352             parse_int is None and parse_float is None and
353             parse_constant is None and object_pairs_hook is None and not kw):
--> 354         return _default_decoder.decode(s)
355     if cls is None:
356         cls = JSONDecoder
~/anaconda3/lib/python3.6/json/decoder.py in decode(self, s, _w)
337 
338         """
--> 339         obj, end = self.raw_decode(s, idx=_w(s, 0).end())
340         end = _w(s, end).end()
341         if end != len(s):
~/anaconda3/lib/python3.6/json/decoder.py in raw_decode(self, s, idx)
355             obj, end = self.scan_once(s, idx)
356         except StopIteration as err:
--> 357             raise JSONDecodeError("Expecting value", s, err.value) from None
358         return obj, end
JSONDecodeError: Expecting value: line 1 column 1 (char 0)

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

  • GET请求返回200
  • 尝试了一些json函数来加载或解析到utf-8或删除无效字符
  • 已尝试simplejson
  • 尝试更改browsermob端口
  • 在不同的网络上尝试,以防阻止是由代理设置引起的

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

  1. 使用pip3安装硒(使用带有Jupyter/iPyson的python 3.6(
  2. 已从下载browsermob二进制文件https://bmp.lightbody.net/
  3. 已下载壁虎驱动程序
  4. 已使用启动代理/在/bin中浏览代理,并尝试使用-port选择端口

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

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

我在OSX 10.14上运行Python 3.6时遇到了同样的问题。

通过切换到Python 3.7来解决问题-适用于Linux和Mac。

相关内容

  • 没有找到相关文章

最新更新