-
파이썬 크롤링(Crawling) 연습 - Daum에서 검색한 전화번호의 기본 정보 추출코딩 연습/코딩배우기 2020. 11. 1. 12:46
■ Daum에서 검색한 전화번호의 기본 정보와 업체명에 링크된 place 페이지 URL을 추출하고 html로 생성하는 연습
import requests from bs4 import BeautifulSoup def get_bs_obj(url, headers = None, params = None): result = requests.get(url, headers = headers, params = params) soup = BeautifulSoup(result.content, 'html.parser') return soup place_tels = ['033-633-1699', '054-734-1077', '055-962-5025', '055-286-2233'] print('<table style="width: 99%; border: 3px solid gray;">') ## html table 생성 코드 for tel in place_tels: daum_search_url = 'https://search.daum.net/search' params = { 'nil_suggest': 'btn', 'w': 'tot', 'DA': 'SBC', 'q': tel } soup = get_bs_obj(daum_search_url, params = params) sub_link = soup.find('div', class_ = 'wrap_cont')
[ '033-633-1699' 번호에 대해 sub_link로 추출한 html 코드 예]
<div class="wrap_cont"> <a class="fn_tit" href="http://place.map.kakao.com/10491171" onclick='smartLog(this, "dc=GG2&pg=1&s=TO&rc=1&d=10491171&r=1&p=1", event);' target="_blank"> 석이네횟집 </a> <span class="txt_bar"></span> <span class="tit_sub">회</span> <div class="info_place"><span class="f_url">033-633-1699</span> <div class="desc_more"> <a class="link_more" href="javascript:;" onclick='smartLog(this, "dc=GG2&pg=1&s=TO&rc=1&d=10491171&r=1&p=33&at=func", event);'> 강원 고성군 토성면 토성로 44-12 봉포항활어회센터 16호 <span class="ico_local ico_more">펼치기/접기</span> </a> <div class="layer_more hide"> <dl class="dl_comm"> <dt class="tit_base">도로명</dt> <dt class="cont">고성군 토성면 토성로 44-12</dt> </dl> <dl class="dl_comm"> <dt class="tit_base">지번</dt> <dd class="cont">고성군 토성면 봉포리 1-5</dd> </dl> </div> </div> </div>
try: a_link = sub_link.find('a', {'class':'fn_tit'}) a_link_url = a_link.get('href') ## a링크 a_link_text = a_link.get_text().strip() ## 상호 classify = sub_link.find('span', class_ = 'tit_sub').text.strip() ## 업종 분류 telNum = sub_link.find('span', class_ = 'f_url').text.strip() ## 전화번호 address = sub_link.find('a', class_ = 'link_more').text.strip() address = address.replace('펼치기/접기', '').strip() ## 주소 ## html 본문 출력 print(f'<tr><td style="width: 30%; background-color: #f3dff7; text-align: center; font-size: 1.0em;">\ <a href="{a_link_url}" target="_blank">{a_link_text} ( {classify} )</a></td>\ <td style="width: 20%; background-color: #f3dff7; text-align: center; font-size: 1.0em;">{telNum}</td>\ <td style="width: 49%; background-color: #f3dff7; text-align: center; font-size: 1.0em;">{address}</td></tr>') except: continue print('</table>')
[실행 결과]
<table style="width: 99%; border: 3px solid gray;"> <tr><td style="width: 30%; background-color: #f3dff7; text-align: center; font-size: 1.0em;"><a href="http://place.map.kakao.com/10491171" target="_blank">석이네횟집 ( 회 )</a></td><td style="width: 20%; background-color: #f3dff7; text-align: center; font-size: 1.0em;">033-633-1699</td><td style="width: 49%; background-color: #f3dff7; text-align: center; font-size: 1.0em;">강원 고성군 토성면 토성로 44-12 봉포항활어회센터 16호</td></tr> <tr><td style="width: 30%; background-color: #f3dff7; text-align: center; font-size: 1.0em;"><a href="http://place.map.kakao.com/11892485" target="_blank">화림산가든 ( 해물,생선 )</a></td><td style="width: 20%; background-color: #f3dff7; text-align: center; font-size: 1.0em;">054-734-1077</td><td style="width: 49%; background-color: #f3dff7; text-align: center; font-size: 1.0em;">경북 영덕군 영덕읍 강변길 366</td></tr> <tr><td style="width: 30%; background-color: #f3dff7; text-align: center; font-size: 1.0em;"><a href="http://place.map.kakao.com/8038488" target="_blank">월산식당 ( 국밥 )</a></td><td style="width: 20%; background-color: #f3dff7; text-align: center; font-size: 1.0em;">055-962-5025</td><td style="width: 49%; background-color: #f3dff7; text-align: center; font-size: 1.0em;">경남 함양군 마천면 천왕봉로 1144-2</td></tr> </table>
## 055-286-2233 번호는 기본정보가 없어서 예외 처리됨
'코딩 연습 > 코딩배우기' 카테고리의 다른 글
파이썬 크롤링(Crawling) 연습 - 네이버 영화 평점/리뷰, 영화코드 추출 (0) 2020.11.04 파이썬 크롤링(Crawling) 연습 - BeautifulSoup 활용 기초 (0) 2020.11.03 파이썬 크롤링(Crawling) 연습 - find(), find_all() 사용한 네이버 증시 주가 추출 (0) 2020.10.29 파이썬 크롤링(Crawling) 연습 - BeautifulSoup 객체를 모듈로 만들어서 사용해보기 (0) 2020.10.27 파이썬 웹 크롤링(Web Crawling) 알아보기 #9 (0) 2020.10.26