인턴 필수 강의로 듣고 정리하는 파이썬 크롤링^^
데이터과학 수업 들으면서 잠깐 해봤는데 그 때보다 재밌게 배운 것 같다. 과제가 아니라서 재밌나보다.
암튼 배운 내용을 잊지 않기 위해 정리해본다.
크롤링에 사용되는 2가지 라이브러리
requests와 BeautifulSoup이다.
예전에 soap으로 써서 오류가 계속 발생했다... ㅠㅠ 이름이 특이한듯......
requests 라이브러리
python에서 http요청을 보낼 수 있는 모듈이다.
url을 통해 서버에 요청을 보내서 response를 받아온다. html문서를 받아오는 역할이라고 할 수 있다.
BeautifulSoup 라이브러리
받아온 html 문서를 처리하는 모듈이다. 주로 사용하는 건 find와 find_all인듯 싶다.
1. requests 사용법
import requests
url = "https://www.google.com"
res = requests.get(url)
# url에 해당하는 서버에 get 요청을 보내서 response를 받는다.
res는 response 객체에 해당한다.
res.status_code하면 응답상태코드를 확인가능하고 res.text하면 html문서 전체를 받는다.
2. BeautifulSoup 사용법
from bs4 import BeautifulSoup
soup = BeautifulSoup(open("index.html"), "html.parser")
# index html문서를 받아와서 파싱한다.
index.html 파일을 열 때에는 저런 식으로 한다. open(파일명) , 받아온 html을 파싱한다는 뜻
requests와 같이 사용하면
soup = BeautifulSoup(res.text, "html.parser")
이렇게 하면 url로 요청을 보내서 html 문서를 받아올 수 있다.
3. 태그 받아오기
d_tag = soup.find("div", class_="cmt_list")
# class가 cmt_list인 div태그를 받아온다. class는 예약어 이므로 _가 필요하다.
id_tag = soup.find("div", id="hello")
# id도 설정가능
a_tag = soup.find_all("a")
# 기본적으로 find는 첫 번째 결과값만 리턴한다. all은 모든 결과값을 반환한다.
이외에도 span이나 strong 키워드를 사용할 수 있다.
4. 태그에서 텍스트 불러오기
get_text()를 사용한다.
for a in div_tag.find_all('a'):
print(a.get_text())
# get_text()는 태그 하나에 적용되므로 find_all을 했다면 각각의 태그에 적용해야 한다.
아래는 예제 코드이다.
import requests
from bs4 import BeautifulSoup
def crawling(soup) :
# soup 객체에서 추출해야 하는 정보를 찾고 반환하세요.
result = []
div_tag = soup.find("div", class_="list_issue")
a_tags = div_tag.find_all("a")
for a in a_tags:
result.append(a.get_text())
return result
def main() :
custom_header = {
'referer' : 'https://www.naver.com/',
'user-agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'
}
url = "http://www.naver.com"
req = requests.get(url, headers = custom_header)
soup = BeautifulSoup(req.text, "html.parser")
# crawling 함수의 결과를 출력합니다.
print(crawling(soup))
if __name__ == "__main__" :
main()
'Data Science > Data Science' 카테고리의 다른 글
[Data Science] 데이터 형변환 (0) | 2021.01.17 |
---|---|
[Data Science] 텍스트 파일 분석 (2) | 2021.01.12 |
[Data Science] 파이썬 크롤링 - 워드 클라우드 만들기 (0) | 2021.01.12 |
[Data Science] API 크롤링 (0) | 2021.01.07 |
[Data Science] 파이썬 크롤링 2 (0) | 2021.01.07 |
댓글