[Python] 웹 크롤링 도전기 (1)

소영·2022년 11월 23일
0

python도 이렇게 제대로 사용하는건 처음이고, 웹 크롤링이라고 하는 것은 더더욱 처음 해보지만 해야할 일이 생겨서 도전

import requests
from bs4 import BeautifulSoup

url = "https://www.fsc.go.kr/po010102"
qp = "?srchCtgry=2&curPage="

처음엔 주소를 하나로 묶어서 사용했으나, 사이에 들어가야하는 게시글 번호 등을 고려해 아예 나눴다

req = requests.get(url + qp)
bsObject = BeautifulSoup(req.content, 'html.parser')
linkItems = bsObject.find_all('div', {'class':'subject'})
hrefs = [ div.find('a')['href'] for div in linkItems ]

여기서 hrefs의 형태

['긁어온 주소1', '긁어온 주소2', '긁어온 주소3', ...]

이제 주소 사이에 들어가는 게시글 번호?만 뽑아내야하는데

for i in hrefs :
	print(hrefs[9:15])

이렇게 작성할 경우 배열 내 문자열이 추출되는 것이 아닌, 배열 자체가 추출되는 현상이 나타났다. 또한

for i in hrefs :
	print(hrefs[i])

이렇게 작성해도 list indices must be integers or slices, not str 라는 오류가 떴다. '리스트의 인덱스는 문자열이 아니라 정수형이여야 한다'가 뭔 뜻인지 첨엔 정말 몰랐다 🥲
그리고 한참을 고민한 끝에 내린 결론

for i in hrefs :
	print(i[9:15])


내가 원하는 모습으로 아주 잘 나왔다!!




지금보면 매우 간단한 문제지만 파이썬 for 문법은 또 익숙하지 않아서 많이 헤맸던 것 같다.

앞으로도 부끄러운 일 투성이겠지만... 크롤링을 꼭 성공하고 싶은 마음에 기록😌

0개의 댓글