본문으로 바로가기

한입에 웹 크롤링 - 초보자도 할 수 있는 웹 데이터 수집 자동화

파이썬으로 웹에서 데이터를 수집하는 방법에 대해서 배우는 책입니다.

파이썬을 처음 입문하시는 분들을 위해 썼습니다.


웹에서 페이지마다 들어가서 데이터 정보 불러오고, 복사해서 붙여넣기 하고 이런 단순 작업들을 자동화 할 수 있습니다.

네이버 API 호출 하는 방법을 배웁니다.

쇼핑몰에 있는 상품 정보를 모두 받아오는 방법을 배웁니다.

동영상 강의가 있어서 책으로만 보고 따라하기 어려운 입문자 분들도 공부하실 수 있습니다.

아래 동영상 강의 링크가 있습니다.






오프라인 강의 - 강남역(탈잉)

https://taling.me/Talent/Detail/3692






end.





댓글을 달아 주세요

  1. BlogIcon 재규어 2019.05.08 13:38

    안녕하세요, 이 책으로 도움 많이 받고 있는 독자입니다.
    제가 7장 쇼핑몰 크롤링으로 응용을 해서 사용하려고 합니다.
    그래서 베트남 오픈마켓인 Tiki에서 'Hàn Quốc'으로 검색을 한 결과를 크롤링해봤습니다.
    그런데 문제는, 책의 방식대로 하면 함수를 사용하였을 때
    여러 개의 리스트가 한번에 출력되는데, 이 리스트들을 합칠 방법이 없을까요?

    제가 프로그래밍쪽 사람이 아니다보니 이런 한계에 부딪히네요..
    제 코드는 다음과 같습니다.

    def get_pdinfo(content):

    ptag_title=content.find("p",{"class":"title"})
    ptag_price=content.find("p",{"class":"price-sale"})
    span_final_price=ptag_price.find("span",{"class":"final-price"})
    span_regular_price=ptag_price.find("span",{"class":"price-regular"})
    discount_rate=ptag_price.find("span",{"class":"sale-tag sale-tag-square"})

    return {"title":ptag_title.text, "final price":span_final_price.text, "original price":span_regular_price.text, "discount rate":discount_rate.text}


    def get_pd_page(url):
    headers = {'User-Agent': 'Chrome/74.0.3729.131'}
    result = requests.get(url, headers=headers)

    bs_obj = bs4.BeautifulSoup(result.content,"html.parser")
    pbl=bs_obj.find("div",{"class":"product-box-list"})

    contents = pbl.findAll("div",{"class":"content "})
    pdinfo_list = [get_pdinfo(content ) for content in contents]
    return pdinfo_list

    n = 10
    urls = [None] * n
    fix_str = "https://tiki.vn/search?q=hàn+quốc&order=top_seller&page="
    for page_num in range(0,n):
    page_str = fix_str + str(page_num+1)
    urls[page_num] = page_str
    page_products = get_pd_page(urls[page_num])
    df_page_products = pd.DataFrame(page_products)
    print(df_page_products)
    df_page_products.to_excel("티키검색hanquoc.xlsx")

    이렇게 하면 print(df_page_products)까지 확인해봤을 때
    50개의 딕셔너리를 포함한 10개의 리스트가 주르륵 나오는데
    이걸 엑셀파일로 보내면 제일 뒷장의 크롤링 결과물들만 나옵니다.

    엑셀화하지 않고 파이썬에서 사용하려고 해도 리스트가 분리되어 있고
    각각의 리스트가 특정된 것이 아니라 함수로 자동 출력되는 형태다 보니 어떻게 손대야할지 모르겠습니다..
    초보적인 질문 실례하고 갑니다..^^;

    • 재규어 2019.05.09 21:04

      해결했습니다. list와 for문을 append로 결합하니까 해결이 되네요^^ 감사합니다