커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
개인프로젝트 크롤링 관련 질문(파이썬 이중 for문)
undefined주차
북마크
백*현
댓글
5
추천
0
조회수
23
조회수
23
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.



설명을 잘못드린점 죄송합니다.


지금상황이 김포시쪽에있는 일반음식점에 대한 정보를 모두 얻어와야하는 상황이라

'https://www.gimpo.go.kr/portal/selectBbsNttList.do?key=1283&id=&&bbsNo=573&searchCtgry=&pageUnit=10&searchCnd=CTGRY&searchKrwd=%EC%9D%8C%EC%8B%9D&integrDeptCode=&pageIndex='


해당페이지의 index가 1부터 493페이지 모두 크롤링해야하는 상황입니다. ㅜ 관련 db를 찾아보려고 김포시청에 여러번 연결해보았으나

담당직원이 부재중이라는 말밖에 없어서 ㅜㅜ..

import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient


client = MongoClient('mongodb+srv://test:sparta@cluster0.clu05af.mongodb.net/Cluster0?retryWrites=true&w=majority')
db = client.dbsparta
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}



for i in range(1,3) :
    data = requests.get(
        'https://www.gimpo.go.kr/portal/selectBbsNttList.do?key=1283&id=&&bbsNo=573&searchCtgry=&pageUnit=10&searchCnd=CTGRY&searchKrwd=%EC%9D%8C%EC%8B%9D&integrDeptCode=&pageIndex='
        +str(i),
         headers=headers)
    soup = BeautifulSoup(data.text, 'html.parser')
    crawls = soup.select('tbody.small')



    for crawl in crawls :
        if crawl is not None :
            temp_rank = crawl.select_one('tbody.small .text_center').text
            temp_title = crawl.select_one('tbody.small a').text
            temp_address =crawl.select_one('tbody.small p').text

            print(temp_rank,temp_title,temp_address)


해서

for i in range(1,3) :
    data = requests.get(
        'https://www.gimpo.go.kr/portal/selectBbsNttList.do?key=1283&id=&&bbsNo=573&searchCtgry=&pageUnit=10&searchCnd=CTGRY&searchKrwd=%EC%9D%8C%EC%8B%9D&integrDeptCode=&pageIndex='
        +str(i),
         headers=headers)
    soup = BeautifulSoup(data.text, 'html.parser')
    crawls = soup.select('tbody.small')


이부분에서 for문을 돌려 1페이지 서부터 493페이지 까지 for문의 range 영역의 3의 숫자를 493 으로 바꾸어

crawls 객체를 1번 부터 493페이지까지 크롤링 한 결과 493페이지 까지 모두 출력이 되었으나


for crawl in crawls :
    if crawl is not None :
        temp_rank = crawl.select_one('tbody.small .text_center').text
        temp_title = crawl.select_one('tbody.small a').text
        temp_address =crawl.select_one('tbody.small p').text

        print(temp_rank,temp_title,temp_address)




이부분에서 1페이지에있는 1~30까지를 정보를 하단 프린트 문을 통해 크롤링 해와야하는데 출력된값은

스파르타 즉문즉답



30개가 아닌 2개가 다입니다.


왜 여기서 결과값이 30개가 아닌 2개만 찍히는지 잘 모르겠습니다. ㅜㅜ..







취소
 공유
취소
댓글 0
댓글 알림
나의얼굴