Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 크롤링
- Service Mesh
- scraping
- GitLab
- Kubernetes
- deploy
- eks
- Grafana
- helm
- linkerd
- DevOps
- 모의해킹
- Resource
- CI
- gitlab cd
- Monitoring
- 스크레이핑
- Crawling
- opentelemetry
- Jenkins
- 웹 취약점
- CI/CD
- CD
- 웹 해킹
- sonarqube
- ECR
- Prometheus
- gitlab ci
- docker
- argocd
Archives
- Today
- Total
ㅡ.ㅡ
[Python/Crawling] urllib - 특정 데이터 추출 및 파일 저장(CSV) 본문
CSV 파일로 데이터 저장하기
CSV모듈과 re모듈을 사용하여 한빛 미디어 책 목록 페이지에서 정규표현식을 활용하여 책에 이름과 상세정보가 담긴 링크를 추출하여 CSV파일에 저장하는 코드이다. 해당 코드에 사용된 중요한 함수와 정규표현식에 대한 설명은 아래 표와 같다.
from urllib.request import urlopen import re, csv from html import unescape # 웹 페이지 읽어오기 req = urlopen("http://www.hanbit.co.kr/store/books/full_book_list.html") encoding = req.info().get_content_charset(failobj="utf-8") html = req.read().decode(encoding) # CSV 파일 생성 with open("book_list.csv", 'w', newline='', encoding="utf-8-sig") as f: writer = csv.writer(f) writer.writerow(["BookName", "URL"]) # 첫 줄에 헤더 작성 # 특정 데이터 추출 for partial_html in re.findall(r'<td class="left"><a.*?</td>', html, re.DOTALL): url = re.search(r'<a href="(.*?)">', partial_html).group(1) url = 'http://www.hanbit.co.kr' + url title = re.sub(r'<.*?>', '', partial_html) title = unescape(title) # csv파일에 데이터 저장 writer.writerow([title, url])
함수 및 매개변수 |
설명 |
---|---|
re.findall() | 정규 표현식에 일치하는 모든 부분을 추출 |
re.search() | 두 번째 매개변수(문자열)가 첫 번째 매개변수(정규표현식)에 일치하는지 확인하여 일치할 경우 Match 객체를, 일치하지 않을 경우 None을 반환 |
group() | 메서드로 일치한 값을 추출 (매개변수에 0을 지정 시 모든 값을 반환, 1이상의 숫자를 지정 시()로 감싼 부분에 해당하는 값을 추출) |
re.sub() | 정규 표현식에 일치하는 부분을 변경 |
unescape() | html에 저장된 문자열을 특수문자로 변환ex) & -> &, " -> ", > -> >, < -> < |
csv.writer() | CSV 파일을 지정하여 객체 생성 |
open(newline=””) | 줄 바꿈 자동 변환 LF -> CRLF |
writerow() | 한 줄 입력 |
정규 표현식 | 설명 |
---|---|
. | 모든 문자 |
* | 0번이상 반복 |
? | 있어도 되고 없어도 된다 |
r' | <a.*? |
r'' | a태그의 href 속성의 값(링크) |
생성된 CSV파일을 확인한 결과 아래 그림과 같이 책이름과 링크가 저장된것을 볼 수 있다.
'Coding' 카테고리의 다른 글
[Python/Crawling] requests - 요청과 응답 (0) | 2018.05.04 |
---|---|
[Python/Crawling] urllib - 특정 데이터 추출 및 파일 저장(DB) (0) | 2018.05.04 |
[Python/Crawling] urllib - 특정 데이터 추출 및 파일 저장(JSON) (0) | 2018.05.04 |
[Python/Crawling] Urillib - 웹 페이지 요청 (0) | 2018.04.30 |
[Python/Crawling] 크롤링 및 스크레이핑 (0) | 2018.04.29 |