최종 목표
총 50개 페이지에서 각 가게의 정보를 가져온다.
- 가게 이름
- 대표 메뉴
- 대표 메뉴의 가격
- 가게 주소
Step 01
크롤링 대상 페이지 검색- 구글에 chicago magazine the 50 best sandwichese를 검색한다.
https://www.chicagomag.com/Chicago-Magazine/November-2012/Best-Sandwiches-Chicago/
어떤 웹브라우저를 써서 데이터에 접근하는지 명시를 해줘야 오류가 뜨지 않는다.
즉, headers는, 우선 하던대로 response = urlopen(url)으로 url을 열어보고 403 오류가 뜬다면 그때 req로 headers 값 지정해주면 된다. 위에서는 간략하게 Chrome으로 적어줬지만, 정석대로 한다면 #주석에 있는 값을 적어주는게 맞다.
"User-Agents"값은 개발자 도구 -> 네트워크 -> 해당 요청 이름을 누른 뒤 맨 아래로 스크롤하면 있다.
다른 방법으로는 fake-useragent를 사용할 수 있다. install 해준 뒤 import로 불러와주고 ua값에 지정. ua.ie를 출력해보면 계속 바뀌는 가상의 useragents값이 생성된다. req값의 Chorme자리에 ua.ie를 넣어줘도 에러 없이 출력 가능하다.
Step 02
해당 페이지에서 얻고 싶은 정보를 클릭해보니 class 가 "sammy"인 값 하위에 있는 것을 확인했다.
전체 데이터값을 불러오기 전에 예시로 첫번째 값을 테스팅 해본다.
.text로 불러온 값에 \n 등 불필요한 정보가 포함되어 있어 re를 import 해준 뒤 re.split("n|\r\n") \n과 \r\n을 기준으로 나눠주고 이를 tmp_string이라는 새로운 변수에 담아준다.
Step 03
앞에서 테스트한 데이터들을 50개의 전체 데이터에 적용한다.
현재 경로 기준으로 상대주소만 나오는 것을 방지해주는 urljoin은 url_base와 현재 나오는 주소를 알아서 합쳐준다. 만약 뒷부분에 url_base가 포함되어 있다면 알아서 중복없이 추출해준다.
갯수 확인과 부분추출을 통해 데이터들이 제대로 들어가있는지 확인한다.
data 변수에 columns로 쓸 이름들을 재정의 해준 뒤, 보기좋게 정리하고 csv파일로 저장해준다.
'Data Analysis' 카테고리의 다른 글
예제 4. 인구 소멸 위기 지역 (0) | 2022.11.28 |
---|---|
예제 3-2. 시카고 맛집 하위페이지 데이터 분석 + 지도 시각화 (0) | 2022.11.23 |
예제 2. 위키백과 문서 정보 가져오기 (0) | 2022.11.20 |
예제1-2 네이버금융 (0) | 2022.11.18 |
예제1-1. 네이버 금융 (0) | 2022.11.17 |