파이썬 크롤링 관련 질문

조회수 804회

안녕하세요 파이썬에 대해 처음부터 막 배우고 있는 단계에서 웹페이지 정보를 크롤링 하는 도중 막히는 부분이 있어 질문 드립니다. 구글링을 나름 열심히 해보았는데 뾰족한 수를 찾지 못해 도움을 요청 드려 봅니다.

질문 . 아래 코드를 돌리니 Response 코드가 200인 것 중에서 URL 정보가 없는 것들은 명칭이나 전화번호가 있더라도 결과 전체가 None으로 출력 이 됩니다. 예외처리 부분이 아무래도 잘못 된거 같은데... URL정보만 None으로 출력 하려면 어떻게 수정해야하는지 궁금합니다.

@@ (return find_nm.text, find_cat.text, find_tell.text, find_adr.text, find_url.text) 이 부분의 text를 빼면 너무 잡다한 정보가 많이 들어와서 유지하고 싶습니다.

//
import requests
from bs4 import BeautifulSoup


def crawl(url):
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'}
    data = requests.get(url=url , headers=headers)
    print(data,"/", url,"/",end = ' ')
    return data.content

def parse(pageString):
    try :
        bsObj = BeautifulSoup(pageString, "html.parser")
        #명칭
        find_nm = bsObj.find("strong",{"class" : "name"})
        #카테고리
        find_cat = bsObj.find("span", {"class" : "category"})
        #전화번호
        find_tell = bsObj.find("div", {"class": "txt"})
        #주소
        find_adr = bsObj.find("span", {"class": "addr"})
        # 홈페이지
        find_url = bsObj.find("a", {"class": "biz_url"})
        return find_nm.text, find_cat.text, find_tell.text, find_adr.text, find_url.text
    except  :
        pass
def printCompanyInfo(code):
    url = "https://store.naver.com/restaurants/detail?id={}".format(code)
    pageString = crawl(url)
    companyInfo = parse(pageString)
    print(companyInfo)

printCompanyInfo("33696029")
printCompanyInfo("13317484")
printCompanyInfo("32287256")
printCompanyInfo("37322689")
printCompanyInfo("36772108")
printCompanyInfo("413454114")
printCompanyInfo("31621852")
printCompanyInfo("13303181")
printCompanyInfo("37127150")
printCompanyInfo("34565498")
//
  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)