정규표현식 | 의미 |
. | 하나의 문자와 일치 |
[ ] | [] 안의 문자열은 수서 상관없이 포함된 문자와 일치 |
[^ ] | [] 안에 포함되지 않은 문자 중 하나 |
^ | 문자열의 시작 위치. 여러 줄에서 처리할 때는 각 줄의 시작을 의미 |
$ | 문자열의 마지막 위치 or 개행문자의 바로 앞 위치 |
( ) | 괄호 안의 일치되는 부분을 묶어서 사용 |
\1 | 1~9까지의 숫자 표현 |
\w | 영어 소문자, 언더바, 영어 대문자, 숫자 a-z, A-Z, _, 0-9 |
* | 바로 앞의 패턴이 0번 이상 일치 |
{1,2} | 바로 앞의 패턴이 최소 1번 최대 2번 일치 |
? | 바로 앞의 패턴이 0 또는 1번 일치 |
+ | 바로 앞의 패턴이 1번 이상 일치 |
| | 앞 패턴 또는 뒤에 패턴 중 하나와 일치 (OR) |
예제 1. 사이트에서 이메일을 수집
import requests
import re
# 수집할 사이트
url=' '
headers = {
'User-Agent': 'Mozilla/5.0',
'Content-Type': 'text/html; charset=utf-8'
}
res=requests.get(url,headers=headers)
results=re.findall(r'[\w\.-]+@[\w\.-]+',res.text)
results=list(set(results))
print(results)
예제 2. 수집한 이메일을 엑셀파일로 저장
import requests
import re
from openpyxl import load_workbook
from openpyxl import Workbook
url=' '
headers = {
'User-Agent': 'Mozilla/5.0',
'Content-Type': 'text/html; charset=utf-8'
}
res=requests.get(url,headers=headers)
results=re.findall(r'[\w\.-]+@[\w\.-]+',res.text)
results=list(set(results))
print(results)
try:
# email.xlsx 파일이 존재하여 로드할 수 있는경우, 파일을 읽는다.
wb=load_workbook(r'email.xlsx',data_only=True)
sheet=wb.active
except:
# email.xlsx 파일이 없다면 새로운 엑셀 파일 생성
wb=Workbook()
sheet=wb.active
# 이메일을 수집한 만큼 반복
for result in results:
sheet.append([result])
wb.save(r'email.xlsx')
'프로그래밍 > python' 카테고리의 다른 글
pyqt5 통한 GUI 프로그램 만들기 메모(Qt Designer) (0) | 2022.11.13 |
---|---|
[python] schedule 라이브러리, 주기/시간 설정 방법 (5) | 2022.10.27 |
[python] pyautogui 라이브러리 기능들 (0) | 2022.10.26 |
[python] qrcode 모듈 사용 중 "No module named 'Image'" 예외 발생 (0) | 2022.10.11 |
[python] socket 모듈로 내부 IP 확인하기. socket(), getsockname(), gethostname(), 정규표현식 (1) | 2022.10.11 |