데이터 크롤링 질문입니다!
조회수 340회
지금 굽네치킨의 매장정보(매장이름, 주소, 번호)를 크롤링 해와 csv파일로 저장하는 연습을 하고있는데 굽네치킨의 웹 구조(태그)가 이해가 가질 않아서 막히고 있습니다.... 현재 웹드라이버로 크롬창을 열어서, 검색버튼을 눌러 전국 매장 리스트가 보이는 창까지는 왔는데 그 다음 크롤링을 못하고 있습니다.... 웹드라이버(크롬)과 셀레니움을 사용하고 있습니다! 다른 쉬운 방법이 있는걸 알지만, 셀레니움과 웹 드라이버 만을 사용하려 합니당
다음은 굽네치킨의 매장 정보 사이트 입니다. https://www.goobne.co.kr/store/search_store
def ChickenGoobne_store(result):
ChickenGoobne = "https://www.goobne.co.kr/store/search_store.asp"
wd = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
wd.get(ChickenGoobne)
time.sleep(5)
wd.get(ChickenGoobne)
time.sleep(5)
wd.execute_script("goSearch('S')")
time.sleep(5)
html = wd.page_source
soupGN = BeautifulSoup(html, 'html.parser')
storeGN =soupGN.find('div', attrs={'class':'desc'})
store_GN = storeGN[5:]
## store_GN을 한 결과입니다. 즉 데이터 구조입니다.
##<div class="desc"><dl><dt class="name">가곡수동</dt><dd class="local">경기도 남양주시 수동면 비룡로 716</dd><dd class="num">031-595-9294</dd></dl></div>
for i in range(1, 1131):
store_name_dt = soupGN.select("div.desc > dt.name") ## TypeError; unhasable type: 'slice'
store_name = store_name_dt.string
store_info = store_GN.findAll('dd')
store_tag = list(store_info.string)
store_address = store_tag[0]
store_phone = store_tag[1]
result.append([store_name]+[store_address]+[store_phone])
return
for 문만 수정하면 될거 같은데 구조가 이해가 안갑니다... 어떻게 수정하면 전국 모든 지역의 점포 정보를 크롤링 할 수 있을까요?
1 답변
-
직접 짠 게 아닌 짜집기한 코드라고 하시니 공부해보라는 뜻에서 이 정도만 알려드립니다.
https://www.google.com/search?q=beautifulsoup+select+select_one
storeGN =soupGN.select('div#content div.result-list div.desc') for i in storeGN: print(i)
댓글 입력