【发布时间】:2022-01-07 01:18:30
【问题描述】:
网页抓取时我在 pyhton 中遇到字符错误。
from requests_html import HTML
with open('list.html', 'r', encoding='cp932', errors='ignore') as html_file:
source = html_file.read()
html = HTML(html=source)
video_link = html.find('a', first=True).text
print(video_link)
它在 html 中打开的行是这样的
<dt><a href="https://www.youtube.com/watch?v=OAJn4XRhr10">
(15) アイナ・ジ・エンド (BiSH) / きえないで [OFFiCiAL ViDEO] - YouTube</a>
我得到的输出:
(15) �A�C�i�E�W�E�G���h (BiSH) / �����Ȃ��� [OFFiCiAL ViDEO] - YouTube
我想要的输出:
(15) アイナ・ジ・エンド (BiSH) / きえないで [OFFiCiAL ViDEO] - YouTube
列表 html:
<!DOCTYPE netscape-bookmark-file-1>
<html><link rel="stylesheet" href="styling.css"><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Reading List</title>
</head><body><h1>Reading List</h1>
<dl><p>
</p><dt><dt><a href="https://www.youtube.com/watch?v=OAJn4XRhr10">
(15) アイナ・ジ・エンド (BiSH) / きえないで [OFFiCiAL ViDEO] - YouTube</a></dt>
将 python 文件的编码设置为 UTF-8 会使输出变得最坏。 (在python文件中编码UTF-8,在html文件中编码字符集UTF-8)
将字符集设置为 cp932 并将 python 文件中的编码设置为 cp932 会使输出变得最糟糕。
Windows PowerShell
Python 3.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
import sys
sys.getdefaultencoding()
'utf-8'
我有显示字符的字体
以字节模式打开它会改变最坏的输出
【问题讨论】:
-
请分享文件。在问题中发布它的内容是不一样的
标签: python html web-scraping encoding cjk