Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Browsermob selenium python-JSONDecodeError_Python_Selenium_Browsermob Proxy_Browsermob - Fatal编程技术网

Browsermob selenium python-JSONDecodeError

Browsermob selenium python-JSONDecodeError,python,selenium,browsermob-proxy,browsermob,Python,Selenium,Browsermob Proxy,Browsermob,在Python中,尝试使用带selenium的browsermob代理获取一组URL的HAR文件。 对于基本实现,我使用的示例代码来自。下面是我的代码 from browsermobproxy import Server import psutil import time server = Server(“/path/to/bin/browsermob-proxy") server.start() proxy = server.create_proxy() from selenium imp

在Python中,尝试使用带selenium的browsermob代理获取一组URL的HAR文件。 对于基本实现,我使用的示例代码来自。下面是我的代码

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)
JSONDecodeError回溯(最近一次调用)
在()
---->1.har
har中的~/anaconda3/lib/python3.6/site-packages/browsermobproxy/client.py(self)
102 r=requests.get(“%s/proxy/%s/har%”(self.host,self.port))
103
-->104返回r.json()
105
106 def new_har(self,ref=None,options=None,title=None):
json格式的~/anaconda3/lib/python3.6/site-packages/requests/models.py(self,**kwargs)
890已使用。
891通行证
-->892返回complexjson.load(self.text,**kwargs)
893
894@property
加载中的~/anaconda3/lib/python3.6/json/\uuuu init\uuuuuuuu.py(s、编码、cls、对象钩子、解析浮点数、解析整型、解析常数、对象对钩子,**kw)
352 parse_int为无,parse_float为无,且
353 parse_常量为None且对象_pairs_hook为None且非kw):
-->354返回\u默认\u解码器。解码
355如果cls为无:
356 cls=JSONDecoder
解码中的~/anaconda3/lib/python3.6/json/decoder.py(self,s,_w)
337
338         """
-->339 obj,end=self.raw\u decode(s,idx=\u w(s,0.end())
340 end=_w(s,end).end()
341如果结束!=长度:
原始解码中的~/anaconda3/lib/python3.6/json/decoder.py(self、s、idx)
355 obj,end=自扫描一次(s,idx)
356除了停止迭代作为错误:
-->357将JSONDecodeError(“预期值”,s,err.value)从None提升
358返回obj,结束
JSONDecodeError:应为值:第1行第1列(字符0)
我已经尝试了很多方法来解决这个问题,但都没能成功

  • GET请求返回200
  • 尝试了一些json函数来加载或解析为utf-8或剥离无效字符
  • 辛普森
  • 尝试更改browsermob端口
  • 在不同的网络上尝试,以防代理设置导致阻塞
不管我怎么做,我都会犯同样的错误。 我最初认为问题在于我的安装。我是这样做的:

  • 使用pip3安装selenium(使用带有Jupyter/iPython的python 3.6)
  • 已从下载的browsermob二进制文件
  • 下载壁虎河
  • 使用/bin中的./browsermob代理启动代理,并尝试使用-port选择端口

  • 任何人都有类似的问题,他们使用除上述问题以外的任何其他方法解决了这些问题。

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

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


    通过切换到Python 3.7解决了此问题-可在Linux和Mac上运行。

    感谢您的回复。我尝试了此操作,但在python2中也出现了相同的错误。我让其他人在他们的机器中尝试了相同的代码,并且在python3.6(与我的相同)中对他们有效,所以我猜安装有问题。同样的问题,升级到py3.7也无法解决发布的一句话“。我运行了.bat文件。警告:发生非法的反射访问操作..”,因此“请在版本9下使用java jdk!“。不确定相关性,但Selenium可能正在运行Java。