달력

10

« 2024/10 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
728x90
반응형

어떤 게시판을 크롤링하고 싶어서

selenium 으로 작업하던 도중 pyautogui 를 이용하여 글 제목을 크롤링해서 붙여넣기를 하는데

계속 오류가 발생했었다.

 

그 원인은..... 한글 입력이 되지 않았던것..

그래서 그 해결책을 조금 찾아봤다.

 

우선 

pip install pyperclip

이놈을 인스톨하고 나서.

 

import pyperclip

file_name = '한글 제목'
pyperclip.copy(file_name)
pyautogui.hotkey('ctrl', 'v')

이런식으로 작업을 하면 원하는 곳에 한글을 자동으로 입력할 수 있게 된다.

클립보드로 복사 후 다시 붙여 넣는 방식이라고 생각하면 된다.

 

또한.. 크롤링 시 웹페이지를 자동으로 저장할 때는 특수문자

? < > | : * / \ 등의 특수문자가 들어가게 되면 오류가 발생하게 된다.

이것 또한 해결을 해 주는 것이 좋다.

 

[특수문자 없애기-1]

# 특수문자 없애기-1
characters = "/'!?|*<>:\\"
str_title = "안녕하세요_!@##$%%^^|/'!?|*<>:\\: Goodmorning"
new_title = ''.join(x for x in str_title if x not in characters)
print(new_title)

#출력
안녕하세요_@##$%%^^ Goodmorning

이런식으로 그냥 없애는 방식으로 진행했다.

replace, 정규식의 sub 등이 있는데 번거롭기만 한듯.

위의 방식이 나에게는 가장 간단한 방식이라고 생각한다.

 

[특수문자없애기-2]

# 특수문자 없애기-2
import re

str_title = "안녕하세요_!@##$%%^^|/'!?|*<>:\\: Goodmorning"
new_title = re.sub('[^a-zA-Z0-9ㄱ-힣]', '_', str_title)
print(new_title)

#출력
안녕하세요_______________________Goodmorning

정규식도 이용해서 작업을 해봤다.

1번 방법도 괜찮지만 for문도 돌리고, 혹시나 글 이외의 특수문자들로 인해서 다른 오류가 나면 안되니깐..

2번째 방법은 특수문자나 중간 띄워쓰기 부분은 '_' underscore 로 모두 변환

728x90
반응형
:
Posted by 패치#노트