웹 페이지에서 데이터를 스크랩하기 위해 BeautifulSoup을 사용하고 있습니다. 웹 사이트 데이터를 .txt 문서에있는 텍스트와 비교하려고합니다. 그러나 인코딩 문제가있는 것 같습니다. (. 어떤 HTML 엔티티) :파이썬 인코딩 문제 : 학위 기호 및 기타
source = "my url".read()
....
soup = BeautifulSoup(source)
웹 사이트는 BeautifulSoup로를 사용하여
이 웹 사이트를 읽을 텍스트 텍스트는 또한 "소스보기"에 다음과 같이 나타납니다 "400 °로 열 오븐"가
텍스트 문서가 "BOM없이 UTF-8로 인코딩"으로 인코딩 된 새 텍스트 문서로 만들어졌습니다. 그런 다음 웹 사이트의 "열 오븐 400 °"를 텍스트 문서에 복사하여 저장했습니다. 나는 두 개의 문자열을 비교하면
텍스트 파일
f = codecs.open('myfilename', encoding='utf-8')
과 같이, 그들은 동일하지,하지만 난 그들이되고 싶어요.
무슨 일이 일어나는지 보려면 Eclipse에서 두 개의 텍스트를 분할하고 디버그 모드에서 변수를보고 BeautifulSoup의 도수 기호가 \ xc2 \ xb0으로 표시되는지 확인합니다. 텍스트 문서의 학위 기호는 \ xb0으로 나타납니다.
왜, 어떻게 수정해야합니까? 많은 특수 문자로이 문제가 발생하므로 일반적인 해결책이 필요합니다. 또한 여러 사이트의 데이터를 텍스트 문서에 복사하여 붙여 넣을 것입니다.
윈도우 1252 인코딩에서 아름다운 수프의 마지막 리조트 추측, 오해 때 무엇을 얻을 수 있습니다 http://stackoverflow.com/search?q=[python]+beautifulsoup+encoding –
텍스트 파일의 인코딩을 알고 적절하게 사용하고 있지만 웹 사이트의 인코딩은 고려하지 않았습니다. 기본적으로 바이트가 동일한 인코딩을 사용하고 있다면 바이트를 비교하거나 유니 코드 문자열을 비교하는 것이 좋습니다 (바이트를 가져 와서 올바른 인코딩을 사용하여 해석해야 함). – Cameron
귀하의 노력에도 불구하고 텍스트 문서가 UTF-8이 아닌 것으로 보입니다. 또는 HTML이 어떻게 든 이중 인코딩됩니다 (차이점을 어떻게 진단했는지 정확하게 알 수는 없으며 정보를 추가하려는 경우 파일의 간단한 16 진 덤프가 도움이됩니다). – tripleee