Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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
Python 3.x Python Selenium().text返回’&引用;而不是撇号(';)_Python 3.x_Selenium Webdriver - Fatal编程技术网

Python 3.x Python Selenium().text返回’&引用;而不是撇号(';)

Python 3.x Python Selenium().text返回’&引用;而不是撇号(';),python-3.x,selenium-webdriver,Python 3.x,Selenium Webdriver,我正在尝试收集关于查找Alpha的评论(例如:)。我在引号中列出了与代码一起收集的注释之一。我使用的代码是().text(也在末尾列出) 问题是,有时候,它可以正确地返回撇号(')[就像第一段中的“Boeing's”),但在其他时候,它会返回“–欧元”™" [像“美国”€™第二段中的“s” “@trentbridge Holy cow这是多么愚蠢的争论。从波音公司的官方网站(提示:他们不认为自己是一家科技公司) 一般信息。波音公司是世界上最大的航空航天公司,是商用喷气式客机、国防、航天和安全系统

我正在尝试收集关于查找Alpha的评论(例如:)。我在引号中列出了与代码一起收集的注释之一。我使用的代码是().text(也在末尾列出)

问题是,有时候,它可以正确地返回撇号(')[就像第一段中的“Boeing's”),但在其他时候,它会返回“–欧元”™" [像“美国”€™第二段中的“s”

“@trentbridge Holy cow这是多么愚蠢的争论。从波音公司的官方网站(提示:他们不认为自己是一家科技公司)

一般信息。波音公司是世界上最大的航空航天公司,是商用喷气式客机、国防、航天和安全系统的领先制造商,以及售后支持服务提供商。作为美国€™该公司是美国最大的制造业出口商,为150多个国家的航空公司和美国及联合政府客户提供支持

……”

有可能我可以直接替换所有的“错误”™在收集所有内容后使用“”。但是,我更喜欢首先找出一种方法来拒绝使用错误的字符

任何帮助都将不胜感激

[comment.text for comment in driver.find_elements_by_class_name('b-c-content')]

您的问题是被误解的撇号不是普通的撇号字符
,而是右单引号的Unicode字符:
。它变成mojibake的原因是您对内容的解码不正确。它在UTF-8中(因此,
'
由三个字节
\xe2\x80\x99
表示),但您正在使用代码页1252对其进行解码(其中三个字节
\xe2\x80\x99
表示三个单独的字符,
)™

由于您没有显示太多的代码,我无法提供任何关于如何解决解码问题的建议,但可能有一种方法可以请求Selenium使用UTF-8(坦白说,我很惊讶这不是默认值)。或者,您可以获取原始字节并自己解码文本

虽然最好避免误码,但如果您真的需要在字符串转换为mojibake后修复字符串,最好的方法可能是按照误码的方式重新编码,然后再次正确解码:

badtext = 'America’s'
encoded = badtext.encode('cp1252') 
goodtext = encoded.decode('utf-8') # 'America’s'