Python 2 到 Python 3:脚本无法正确执行

斯特凡

我制作了这个脚本来检查 github 配置文件是否包含电子邮件并将它们排序为 2 个单独的列表,它还没有完成需要优化和摆脱额外的东西。

主要问题是我使用 python 在终端上运行,而我的系统是 2.7,当我想用​​ python 3 运行它时,出现错误,我尝试调试它们但仍然无法解决问题。

这是我的代码:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from timeit import default_timer as timer

start = timer()

timeout = 1

haveEmail = []
noEmail = []

options = webdriver.ChromeOptions()
options.add_argument("headless")

#YOU NEED TO PROVIDE THE LOCATION OF YOU CHROME DRIVER
browser = webdriver.Chrome('/home/djurovic/Desktop/Linux ChromeDriver/chromedriver', chrome_options=options)

def login(email):
    browser.get(email)

    signInXpath = '//a[@class="HeaderMenu-link no-underline mr-3"]'
    signInElement = WebDriverWait(browser, timeout).until(lambda browser: browser.find_element_by_xpath(signInXpath))
    signInElement.click()

    #ENTER YOUR LOGIN INFORMATION
    username = ''
    password = ''

    userNameXpath = '//input[@class="form-control input-block"]'
    passwordXpath = '//input[@class="form-control form-control input-block"]'
    loginButtonXpath = '//input[@class="btn btn-primary btn-block"]'

    userNameElement = WebDriverWait(browser, timeout).until(lambda browser: browser.find_element_by_xpath(userNameXpath))
    passwordElement = WebDriverWait(browser, timeout).until(lambda browser: browser.find_element_by_xpath(passwordXpath))

    userNameElement.clear()
    userNameElement.send_keys(username)
    passwordElement.clear()
    passwordElement.send_keys(password)

    loginButtonElement = WebDriverWait(browser, timeout).until(lambda browser: browser.find_element_by_xpath(loginButtonXpath))
    loginButtonElement.click()

def checkEmail(profile):
    browser.get(profile)
    emailXPath = '//a[@class="u-email"]'
    try:
        emailElement = WebDriverWait(browser, timeout).until(lambda browser: browser.find_element_by_xpath(emailXPath))
        haveEmail.append(profile)
    except:
        noEmail.append(profile)

def parse():
    i = 1
    document = open('profiles.txt', 'rb')
    for profile in document:
        if i == 1:
            login(profile)
            i = i + 1
        checkEmail(profile)      
    browser.close()

parse()

print(haveEmail)
print(noEmail)

for item in haveEmail:
    output_file = open("profiles_with_email.txt", 'a')
    for i in str(len(haveEmail)):
        output_file.write(item + "\n")
    output_file.close()

for item in noEmail:
    output_file = open("profiles_with_no_email.txt", 'a')
    for i in str(len(noEmail)):
        output_file.write(item + "\n")
    output_file.close()


elapsed_time = timer() - start
print("Script finished in " + str(elapsed_time))

以下是我在通过 python 3 运行时遇到的错误:

Traceback (most recent call last):
  File "github.py", line 77, in <module>
    parse()
  File "github.py", line 72, in parse
    login(profile)
  File "github.py", line 33, in login
    browser.get(email)
  File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 333, in get
    self.execute(Command.GET, {'url': url})
  File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 319, in execute
    response = self.command_executor.execute(driver_command, params)
  File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/remote_connection.py", line 372, in execute
    data = utils.dump_json(params)
  File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/utils.py", line 33, in dump_json
    return json.dumps(json_struct)
  File "/usr/lib/python3.6/json/__init__.py", line 231, in dumps
    return _default_encoder.encode(obj)
  File "/usr/lib/python3.6/json/encoder.py", line 199, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/lib/python3.6/json/encoder.py", line 257, in iterencode
    return _iterencode(o, 0)
  File "/usr/lib/python3.6/json/encoder.py", line 180, in default
    o.__class__.__name__)
TypeError: Object of type 'bytes' is not JSON serializable

任何形式的帮助都会有很大帮助!!!

斯特凡

感谢@ZeroQ 和@Divyanshu Srivastava

我试过@Divyanshu Srivastava,但该函数不能接受额外的参数,所以我刚刚在我的 parse() 函数中添加了这一行:

profile = profile.decode('utf-8')

它是一种魅力。再次感谢。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从Applescript或Py2app执行时,MAC OS和Python脚本无法读取文件

来自分类Dev

从python 2到python 3的代码转换

来自分类Dev

从Python 2到Python 3:无法进行多重处理

来自分类Dev

Python脚本无法正确编码特殊的Unicode字符

来自分类Dev

Python脚本无法正确编码特殊的Unicode字符

来自分类Dev

将 python 对象从 python2 脚本传递到 python3 脚本

来自分类Dev

Python脚本在cron中无法正确执行

来自分类Dev

更新选择=(选择%6)+ 1从python 2到python 3

来自分类Dev

Python脚本无法从XML提取数据

来自分类Dev

Crontab,python脚本无法运行

来自分类Dev

Python 脚本无法打开 Microsoft Edge

来自分类Dev

为什么具有执行权限的python脚本无法在Ubuntu上运行?

来自分类Dev

为什么具有执行权限的python脚本无法在Ubuntu上运行?

来自分类Dev

日期时间python脚本无法输出正确的小时,分钟和秒

来自分类Dev

Python 2到3发出警告

来自分类Dev

如何将__slots__从Python 2移植到3

来自分类Dev

Python readlines() 3.X 到 2.X

来自分类Dev

将 Python 2x 移植到 3x

来自分类Dev

从tkinter到python脚本输入,从python脚本到tkinter输出

来自分类Dev

python脚本到python的管道名称

来自分类Dev

Flask 迁移 python2 到 3 ImportError:无法导入名称

来自分类Dev

从MATLAB到Python的2D FFT

来自分类Dev

IP2Location + Netmiko 到 SSH 到 VM 到 MTR 并打印结果(If、elif、else 语句问题)PYTHON3

来自分类Dev

改变进口处理/模块从python2到python3?

来自分类Dev

Python 2 do_POST http.server multipart / formdata到Python 3

来自分类Dev

从Python 2升级到Python 3后该怎么办?

来自分类Dev

将python 2代码移植到python 3:ICMP扫描时出现错误

来自分类Dev

从 Python 2 到 Python 3 的转换:TypeError: a bytes-like object is required

来自分类Dev

Python 2 到 Python 3:类型错误:“模块”对象不可调用

Related 相关文章

  1. 1

    从Applescript或Py2app执行时,MAC OS和Python脚本无法读取文件

  2. 2

    从python 2到python 3的代码转换

  3. 3

    从Python 2到Python 3:无法进行多重处理

  4. 4

    Python脚本无法正确编码特殊的Unicode字符

  5. 5

    Python脚本无法正确编码特殊的Unicode字符

  6. 6

    将 python 对象从 python2 脚本传递到 python3 脚本

  7. 7

    Python脚本在cron中无法正确执行

  8. 8

    更新选择=(选择%6)+ 1从python 2到python 3

  9. 9

    Python脚本无法从XML提取数据

  10. 10

    Crontab,python脚本无法运行

  11. 11

    Python 脚本无法打开 Microsoft Edge

  12. 12

    为什么具有执行权限的python脚本无法在Ubuntu上运行?

  13. 13

    为什么具有执行权限的python脚本无法在Ubuntu上运行?

  14. 14

    日期时间python脚本无法输出正确的小时,分钟和秒

  15. 15

    Python 2到3发出警告

  16. 16

    如何将__slots__从Python 2移植到3

  17. 17

    Python readlines() 3.X 到 2.X

  18. 18

    将 Python 2x 移植到 3x

  19. 19

    从tkinter到python脚本输入,从python脚本到tkinter输出

  20. 20

    python脚本到python的管道名称

  21. 21

    Flask 迁移 python2 到 3 ImportError:无法导入名称

  22. 22

    从MATLAB到Python的2D FFT

  23. 23

    IP2Location + Netmiko 到 SSH 到 VM 到 MTR 并打印结果(If、elif、else 语句问题)PYTHON3

  24. 24

    改变进口处理/模块从python2到python3?

  25. 25

    Python 2 do_POST http.server multipart / formdata到Python 3

  26. 26

    从Python 2升级到Python 3后该怎么办?

  27. 27

    将python 2代码移植到python 3:ICMP扫描时出现错误

  28. 28

    从 Python 2 到 Python 3 的转换:TypeError: a bytes-like object is required

  29. 29

    Python 2 到 Python 3:类型错误:“模块”对象不可调用

热门标签

归档