Ann*_*Q W 3 python-3.x selenium-webdriver
我正在尝试收集有关 Seeking Alpha 的评论(例如: https: //seekingalpha.com/article/4243835-teslas-low-2019-capex-harm-growth-story-brand-value)。我用引号中的代码列出了我收集的评论之一。我使用的代码是 ().text (也在末尾列出)。
\n\n问题是,有时,它可以正确返回撇号(\')[如第一段中的“Boeing\'s”],但有时,它返回“\xc3\xa2\xe2\x82\xac\xe2\ x84\xa2” [类似于第二段中的“America\xc3\xa2\xe2\x82\xac\xe2\x84\xa2s”]。
\n\n“@trentbridge 天哪,这是多么愚蠢的论点。来自波音的官方网站(提示:他们不认为自己是一家科技公司)
\n\n一般信息。波音公司是全球最大的航空航天公司,也是商用喷气式客机、国防、太空和安全系统的领先制造商以及售后支持服务提供商。作为美国\xc3\xa2\xe2\x82\xac\xe2\x84\xa2最大的制造业出口商,该公司为150多个国家的航空公司以及美国和盟国政府客户提供支持。
\n\n……”
\n\n有可能我可以在收集所有内容后将所有“\xc3\xa2\xe2\x82\xac\xe2\x84\xa2”替换为“\'”。然而,我确实更愿意找到一种方法来拒绝一开始就得到错误的字符。
\n\n任何帮助,将不胜感激!
\n\n[comment.text for comment in driver.find_elements_by_class_name(\'b-c-content\')]\nRun Code Online (Sandbox Code Playgroud)\n
您的问题是,被误解的撇号不是正常的撇号字符',而是正确单引号的 Unicode 字符:\xe2\x80\x99。它变成 mojibake 的原因是您对内容的解码不正确。它采用 UTF-8 格式(因此\xe2\x80\x99由三个字节 表示\\xe2\\x80\\x99),但您使用代码页 1252 对其进行解码(其中三个字节\\xe2\\x80\\x99表示三个单独的字符 、\xc3\xa2和\xe2\x82\xac)\xe2\x84\xa2。
由于您没有显示太多代码,我无法提供任何有关如何解决解码问题的建议,但可能有一种方法可以请求 Selenium 使用 UTF-8 (坦率地说,我很惊讶这不是默认值)。或者,您也许能够获取原始字节并自行解码文本。
\n\n虽然最好避免错误解码,但如果您确实需要在字符串转为 mojibake 后修复字符串,最好的方法可能是按照错误解码的方式重新编码,然后再次解码,这次正确:
\n\nbadtext = 'America\xc3\xa2\xe2\x82\xac\xe2\x84\xa2s'\nencoded = badtext.encode('cp1252') \ngoodtext = encoded.decode('utf-8') # 'America\xe2\x80\x99s'\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
6915 次 |
| 最近记录: |