Python에서 "UnicodeEncodeError : 'ascii'코덱이 위치 3656에서 문자 u '\ xa0'을 인코딩 할 수 없습니다 : 서 수가 범위 (128)에 없음"오류를 수정하는 방법

Tobzville

Beautifulsoup을 사용하여 학교 웹 사이트에서 학생 시간표를 크롤링하는 코드를 작성 중입니다. 문제는이 UnicodeError : 'ascii'codec ca n't encode character u '\ xa0'in position 3656 : ordinal not in range (128) result and I cannot resolve it. 문제는 계속 발생합니다.

import urllib2
from bs4 import BeautifulSoup
import os

def make_soup(url):
    thepage = urllib2.urlopen(url)
    soupdata = BeautifulSoup(thepage, "html.parser")
    return soupdata

timetabledatasaved = ""
soup = make_soup("http://timetable.ait.ie/reporting/textspreadsheet;student+set;id;AL%5FKSWFT%5FR%5F5%0D%0A?t"
             "=student+set+textspreadsheet&days=1-5&weeks=21-32&periods="
             "3-20&template=student+set+textspreadsheet")

for record in soup.find_all('tr'):
    timetabledata = ""
    print record
    print '--------------------'
    for data in record('td'):
        timetabledata = timetabledata + "," + data.text
    if len(timetabledata) != 0:
        timetabledatasaved = timetabledatasaved + "\n" + timetabledata[1:]

#print timetabledatasaved

header = "Activity, Module, Type, Start, End, Duration, Weeks, Room, Staff, Student Groups"
file = open(os.path.expanduser("timetable.csv"), "wb")
file.write(bytes(header).encode("utf-8", errors="ignore"))
file.write(bytes(timetabledatasaved).encode("utf-8", errors="ignore"))

Utf-8을 사용했지만 시간표를 크롤링 한 후에도 여전히이 오류가 발생합니다. 다시 말하지만, 내 코드가 페이지의 자바 스크립트도 크롤링하는 것처럼 보이지만 관련 시간표 데이터 만 인쇄하고 .csv 파일로 저장하기를 원합니다.

Traceback (most recent call last):
  File "/Users/tobenna/PycharmProjects/final_project/venv/timetable_scrape.py", line 30, in <module>
    file.write(bytes(timetabledatasaved).encode("utf-8", errors="ignore")) 
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 3656: ordinal not in range(128)

Process finished with exit code 1

bytesPython 2에서는의 동의어 str이므로 bytes()값을 호출 하여 ASCII로 인코딩하므로 '\xa0'. 값을 직접 인코딩합니다.

file.write(header.encode("utf-8", errors="ignore"))
file.write(timetabledatasaved.encode("utf-8", errors="ignore"))

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관