driver.find_element_by_xpath(‘‘).screenshot_as_png报错json.decoder.JSONDecodeError,求解

使用超级鹰作为识别验证码工具

超级鹰的代码

#!/usr/bin/env python
# coding:utf-8

import requests
from hashlib import md5
import json

class Chaojiying_Client(object):

    def __init__(self, username, password, soft_id):
        self.username = username
        password =  password.encode('utf8')
        self.password = md5(password).hexdigest()
        self.soft_id = soft_id
        self.base_params = {
            'user': self.username,
            'pass2': self.password,
            'softid': self.soft_id
        }
        self.headers = {
            'Connection': 'Keep-Alive',
            'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)'
        }

    def PostPic(self, im, codetype):
        """
        im: 图片字节
        codetype: 题目类型 参考 http://www.chaojiying.com/price.html
        """
        params = {
            'codetype': codetype
        }
        params.update(self.base_params)
        files = {
            'userfile': ('ccc.jpg', im)
        }
        r = requests.post('http://upload.chaojiying.net/Upload/Processing.php', data=params, files=files, headers=self.headers)
        #mes = json.loads(r,strict = False)
        return r.json()

    def ReportError(self, im_id):
        """
        im_id:报错题目的图片ID
        """
        params = {
            'id': im_id
        }
        params.update(self.base_params)
        r = requests.post('http://upload.chaojiying.net/Upload/ReportError.php', data=params, headers=self.headers)
        return r.json()


if __name__ == '__main__':
	chaojiying = Chaojiying_Client('用户名', '密码', '922153')	#用户中心>>软件ID 生成一个替换 96001
	im = open('yzm.jpg', 'rb').read()													#本地图片文件路径 来替换 a.jpg 有时WIN系统须要//
	print (chaojiying.PostPic(im, 1902))												#1902 验证码类型  官方网站>>价格体系 3.4+版 print 后要加()

登录

from selenium.webdriver import Chrome
import time
from chaojiying import Chaojiying_Client


driver = Chrome()
driver.get("https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx")

img = driver.find_element_by_xpath('/html/body/form[1]/div[4]/div[4]/img').screenshot_as_png

chaojiying = Chaojiying_Client('用户名', '密码', '922153')

dic = chaojiying.PostPic(img, 1902)
verify_code = dic['pic_str']
print(verify_code)

#driver.find_element_by_xpath("/html/body/form[1]/div[4]/div[2]/input[2]").send_keys("用户名")
#driver.find_element_by_xpath("/html/body/form[1]/div[4]/div[3]/input").send_keys("密码")
#driver.find_element_by_xpath("/html/body/form[1]/div[4]/div[4]/input").send_keys(verify)
#time.sleep(2)
#driver.find_element_by_xpath("/html/body/form[1]/div[4]/div[6]/input").click()

运行到

driver.find_element_by_xpath('/html/body/form[1]/div[4]/div[4]/img').screenshot_as_png

他会报错

C:\Users\pc\AppData\Local\Programs\Python\Python35\python.exe E:/pypc/example1/验证码/易安联验证.py
Traceback (most recent call last):
  File "E:/pypc/example1/验证码/易安联验证.py", line 10, in <module>
    img = driver.find_element_by_xpath('/html/body/form[1]/div[4]/div[4]/img').screenshot_as_png
  File "C:\Users\pc\AppData\Local\Programs\Python\Python35\lib\site-packages\selenium\webdriver\remote\webelement.py", line 392, in screenshot_as_png
    return base64.b64decode(self.screenshot_as_base64.encode('ascii'))
  File "C:\Users\pc\AppData\Local\Programs\Python\Python35\lib\site-packages\selenium\webdriver\remote\webelement.py", line 382, in screenshot_as_base64
    return self._execute(Command.ELEMENT_SCREENSHOT)['value']
  File "C:\Users\pc\AppData\Local\Programs\Python\Python35\lib\site-packages\selenium\webdriver\remote\webelement.py", line 454, in _execute
    return self._parent.execute(command, params)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python35\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 201, in execute
    self.error_handler.check_response(response)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python35\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 102, in check_response
    value = json.loads(value_json)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python35\lib\json\__init__.py", line 319, in loads
    return _default_decoder.decode(s)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python35\lib\json\decoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Users\pc\AppData\Local\Programs\Python\Python35\lib\json\decoder.py", line 357, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

求解决办法

你可能感兴趣的:(json,python,爬虫)