에 detwingle 충돌 나는 웹 사이트를 스크랩하고 구문 분석 BeautifulSoup4를 사용합니다. websits이 정말 무작위 문자 세트를 가질 수 있듯이, 내가 BeautifulSoup로에 적절한 데이터를 공급하도록 UnicodeDammit.detwingle를 사용합니다. 추락 할 때까지 잘 작동했습니다. 한 웹 사이트에서 코드가 손상됩니다. "수프"를 구축하는 코드는 다음과 같습니다UnicodeDammit : 웹 사이트
u = bs.UnicodeDammit.detwingle(html_blob) <--- here it crashes
u = bs.UnicodeDammit(u.decode('utf-8'),
smart_quotes_to='html',
is_html = True)
u = u.unicode_markup
soup = bs.BeautifulSoup(u)
그리고 오류 (표준 파이썬 유니 코드 지옥 듀오)
File ".../something.py", line 92, in load_bs_from_html_blob
u = bs.UnicodeDammit.detwingle(html_blob)
File ".../beautifulsoup4-4.1.3-py2.7.egg/bs4/dammit.py", line 802, in detwingle
return b''.join(byte_chunks)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 0:
ordinal not in range(128)
기분을 상하게하는 웹 사이트가 this one
질문 : 방법 적절하고 방탄 웹 사이트 소스 디코딩을 만드는 방법?
, 나는 함께 덤프 파일을 여는 권하고 싶습니다'' 'wb''' 대신''의' 'w ''를 사용하고''fh.write (html_blob)' '만 사용하면됩니다. 희망이 도움이됩니다. (즉, 이진 파일이 아닌 텍스트로를 열 수 있습니다, 그래서 파이썬은 바이너리 만약 당신이 쓰고있어 출력 다시 인코딩을 시도하지 않습니다) –
@JonasWielicki을 : 감사합니다, 나는 완전히 그 시점을 놓쳤다. 질문을 편집하고이 문제를 제거했습니다. –