편의점 - 동적페이지 파이썬 크롤링? 여러 페이지 - 여러 클래스의 정보 불러오는 방법 !!! 이주일동안 독학해보았지만 안됩니다ㅜㅜ
조회수 2224회
편의점 점포의 목록들을 크롤링하고 있습니다.
그 중 서울특별시라는 조건과 로또 판매 등과 같은 조건을 적용한 검색 결과 목록을 크롤링하고 싶은데요 !
아무 조건 없이 크롤링을 해보았습니다
그 결과 한페이지만 되고
나머지 페이지들을 어떻게 하는지 궁금합니다 !
>>> from bs4 import BeautifulSoup
>>> from selenium import webdriver
>>> driver = webdriver.Chrome(''chromedriver.exe')
>>> driver.get('http://cu.bgfretail.com/store/list.do?category=store')
>>> html = driver.page_source
>>> soup = BeautifulSoup(html, 'html.parser')
>>> nameList = soup.findAll("span", {"class":"name"})
>>> for name in nameList:
print(name.get_text())
<결과>
1타타대우상용차신협
2타타대우상용차신협
419사거리점
63빌딩점
6공단1호점
>>>
질문 : 여러 페이지에 있는 가게명, 전화번호, 주소를 한 번에 출력 값으로 어떻게 받나요??
제가 얻고 싶은 정보는 가게명, 전화번호, 주소 입니다 !
원래 자바만 했었는데 한계가 있어 파이썬을 처음 시도하고 정말 이주일동안 여러개문서들을 봤지만 결국 해결하지 못했습니다 ㅜㅜㅜ 고수님들 도와주세요ㅜㅜㅜ
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
사실 셀레니움으로 하는 것이라면 아래의 리스팅 숫자를 클릭해주면 됩니다.
이벤트로 검색해보면 될 것이고요.
그런데 질문의 사이트는 셀레니움을 이용해서 무겁게 작업하지 않아도 됩니다.
실제 결과를 받는 주소는 아래와 같습니다.
다만 주소를 그냥 브라우져에 붙여넣으면 결과 없음이라고 나타날겁니다.
그 이유는 헤더의 값 몇가지를 체크하는 것으로 보입니다.
대표적으로 리퍼러와 호스트 같은 값들을 체크하는 것으로 보입니다.
url 호출시 아래의 쿠키값을 셋팅하여 호출하고 호출할 url에서 pageIndex=2 값만 변경하여 호출하면 결과가 조회됩니다.
Host:cu.bgfretail.com Connection:keep-alive Content-Length:207 Accept:text/html, */*; q=0.01 Origin:http://cu.bgfretail.com X-Requested-With:XMLHttpRequest User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36 Content-Type:application/x-www-form-urlencoded; charset=UTF-8 Referer:http://cu.bgfretail.com/store/list.do?category=store
- 감사합니다 !!! 페이징 문제는 해결되었습니다. 한가지 더 질문이 있는데요 ! 가게명과 전화번호는 쉽게 구할 수 있는데 주소는 a href?식으로 소스가 되어있어 잘 모르겠습니다. 이 세가지 정보를 한번에 출력할 수 있는 방법이 있나요?? 알 수 없는 사용자 2019.1.27 22:01
- from bs4 import BeautifulSoup from selenium import webdriver from urllib.request import urlopen from selenium.webdriver.support.ui import Select driver = webdriver.Chrome('C:/Users/Desktop/chromedriver_win32/chromedriver.exe') base_url = 'http://cu.bgfretail.com/store/list_Ajax.do?pageIndex={}&listType=&jumpoCode=&jumpoLotto=Y&jumpoToto=&jumpoCash=&jumpoHour=&jumpoCafe=&jumpoDelivery=&jumpoBakery=&jumpoFry=&jumpoAdderss=&jumpoSido=서울특별시&jumpoGugun=&jumpodong=&user_id=&sido=서울특별시&Gugun=&jumpoName=' for n in range (508) : url = base_url.format(n+1) webpage = urlopen(url) source = BeautifulSoup(webpage, 'html.parser') nameList = source.find_all ("span", {"class" : "name"}) telList = source.find_all ("span", {"class" : "tel"}) for name in nameList : print(nameList) for tel in telList : print(tel.get_text()) ///오류가 나는 이유를 모르겠습니다. 알 수 없는 사용자 2019.1.27 22:19
- ↑ 이런건 질문을 새로 올려주시면 좋겠습니다. 침착하시고... 엽토군 2019.1.28 15:02
댓글 입력