파이썬에서 웹 크롤링을 할때 날짜 관련된 에러가 발생할 경우가 있습니다.
크롤링시 Datetime 에러
먼저 살펴볼 것은 파이썬의 datetime이 지원하지 않는 포맷이어서 발생하는 에러입니다.
datetime은 파이썬에서 날짜와 시간을 표현하는 패키지 입니다.
아래와 같이 엑셀에서 지원하지 않는 형식이라고 하는데요.
Excel does not support datetimes with timezones.
File "C:\python\lib\site-packages\pandas\core\generic.py", line 2284, in to_excel formatter.write( File "C:\python\lib\site-packages\pandas\io\formats\excel.py", line 840, in write writer.write_cells( File "C:\python\lib\site-packages\pandas\io\excel\_openpyxl.py", line 457, in write_cells for cell in cells: File "C:\python\lib\site-packages\pandas\io\formats\excel.py", line 778, in get_formatted_cells cell.val = self._format_value(cell.val) File "C:\python\lib\site-packages\pandas\io\formats\excel.py", line 526, in _format_value raise ValueError(ValueError: Excel does not support datetimes with timezones. Please ensure that datetimes are timezone unaware before writing to Excel.
이 경우에 해당 데이터를 datetime함수를 import 한 다음
아래와 같이 엑셀에서 지원하는 포맷으로 변경하여 해결이 가능합니다.
import datetime
df['date'] = df['date'].apply(lambda a: pd.to_datetime(a).date())
파이썬 지원하지 않는 글자 에러
위의 에러는 날짜 포맷이 맞지 않는 경우인데요.
또 유사한 에러로 openpyxl.utils.exceptions.illegalCharacterError도 종종 크롤링한 결과를 받다보면 발생합니다.
이 역시 엑셀에서 지원하지 않는 글자가 있는 경우에 발생하게 됩니다.
즉 보이지 않는 어떤 문자가 엑셀에서 지원하지 않는 문자이기 때문입니다.
openpyxl.utils.exceptions.IllegalCharacterError
File "C:\python\lib\site-packages\pandas\core\generic.py", line 2284, in to_excel
formatter.write(
File "C:\python\lib\site-packages\pandas\io\formats\excel.py", line 840, in write
writer.write_cells(
File "C:\python\lib\site-packages\pandas\io\excel\_openpyxl.py", line 461, in write_cells
xcell.value, fmt = self._value_with_fmt(cell.val)
File "C:\python\lib\site-packages\openpyxl\cell\cell.py", line 215, in value
self._bind_value(value)
File "C:\python\lib\site-packages\openpyxl\cell\cell.py", line 194, in _bind_value
value = self.check_string(value)
File "C:\python\lib\site-packages\openpyxl\cell\cell.py", line 162, in check_string
raise IllegalCharacterError
openpyxl.utils.exceptions.IllegalCharacterError
이 경우에 해당 택스트를 re 패키지로 치환해줘야 하는데요.
만약 text1이 문제가 된다면 아래와 같은 코드를 통해서 에러를 해결할 수 있습니다.
import re
from openpyxl.cell.cell import ILLEGAL_CHARACTERS_RE
text1 = ILLEGAL_CHARACTERS_RE.sub(r'',text1)
이 경우 역시 이렇게 설정을하면 아무 문제없이 제대로 실행됨을 알 수 있습니다.
크롤링을 하다보면 여러가지 에러가 발생하는 경우가 종종 있는데요.
에러 메시지를 구글링을 하시면 편하게 해결할 수 있습니다.
그럼 잘 사용하시기 바랍니다.
'Tip & Tech > Python' 카테고리의 다른 글
파이썬 유튜브 채널 50개 넘는 리스트 불러오기 (4) | 2022.08.11 |
---|---|
파이썬 머신러닝 기초 - 결측치 처리하기 (6) | 2022.08.06 |
파이썬 QR코드로 URL 링크 만드는 방법 (3) | 2022.07.23 |
파이썬으로 웹페이지 크롤링 후 글자수 세기 (2) | 2022.07.20 |
파이썬 pip upgrade시 액세스가 거부되었습니다 에러 해결하기 (0) | 2022.07.20 |