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
bytes
Python 2에서는의 동의어 str
이므로 bytes()
값을 호출 하여 ASCII로 인코딩하므로 '\xa0'
. 값을 직접 인코딩합니다.
file.write(header.encode("utf-8", errors="ignore"))
file.write(timetabledatasaved.encode("utf-8", errors="ignore"))
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다