BeautifulSoup4 활용2

2023. 4. 22. 21:40·python/python_selenium
# HTTP METHOD
# get : 어떤 내용을 누구나 볼수 있게 url에 적어서 보내는 방식
# (한번 보낼때 데이터의 양이 제한이있어 큰 데이터를 보낼 수 없음)
# post : url이 아닌 http body에 넣어서 보내는 방식
# (id/pw와 같은 보안이 필요한 업무, 큰 데이터 등을 보낼 수 있음)

import requests
import re
from bs4 import BeautifulSoup

for page in range(1,6):
    url = "<https://search.shopping.naver.com/search/all?query=%EB%85%B8%ED%8A%B8%EB%B6%81&pagingIndex=>"+str(page)
    header = {'User-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36"}
    res = requests.get(url, headers=header)
    res.raise_for_status()

    soup = BeautifulSoup(res.text, "lxml")

    # basicList_item__0T9JD 로 시작하는 class의 모든 element를 가져옴.(정규식 사용)
    items = soup.find_all("div", attrs={"class":re.compile("^basicList_item__0T9JD")})
    # soup.find로 가져온 값에서 다시 find를 통해 하위 element값을 가져올 수 있다.
    items[0].find("div", attrs = {"class":"basicList_info_area__TWvzp"}).div.get_text()
    for item in items:
        
        print("-"*50)
        info = item.find("div", attrs = {"class":"basicList_info_area__TWvzp"})
        # 링크
        href = info.div.a["href"]
        # 제품명
        name = info.find("div", attrs = {"class":"basicList_title__VfX3c"}).get_text()
        if "Apple" in name:
            print("<apple상품 제외합니다="">")
            continue
        # 가격
        price = info.find("div", attrs = {"class":"basicList_price_area__K7DDT"})\\
            .strong.span.span.find("span", attrs = {"class":"price_num__S2p_v"}).get_text()
        
        # 광고 제품 제외
        # 광고 태그가 없는 제품을 제외함
        ad_badge = item.find("button", attrs = {"class": "ad_ad_stk__pBe5A"})
        if ad_badge:
            print("<광고 상품 제외합니다>")
            continue
        
        stars = info.find("div", attrs = {"class":"basicList_etc_box__5lkgg"})
    
        # 평점 수
        stars_num = stars.a.em.get_text()
        if not stars_num:
            print("<평점 없는 상품 제외합니다.>")
            continue
            # stars_num = "평점 개수 없음"
        else :
            if int(stars_num.replace(",","")) < 500:
                print("<평점 수 미달 : {}>".format(stars_num))
                continue
        # 평점
        stars = stars.find("span", attrs = {"class":"basicList_star__UzKiv"})
        if not stars:
            print("<별점 없는 상품 제외합니다.>")
            continue
            # stars = "별점 없음"
        else:
            stars = stars.get_text()

        print("제품명 : {}".format(name))
        print("가격 : {}".format(price))
        print("별점 : {}".format(stars))
        print("평점 수 : {}".format(stars_num))
        print("바로가기 : {}".format(href))
</apple상품>

  • HTTP METHOD
    • get : 어떤 내용을 누구나 볼수 있게 url에 적어서 보내는 방식
      ㄴ 한번 보낼때 데이터의 양이 제한이있어 큰 데이터를 보낼 수 없음
    • post : url이 아닌 http body에 넣어서 보내는 방식
      ㄴ id/pw와 같은 보안이 필요한 업무, 큰 데이터 등을 보낼 수 있음
  • soup.find_all(”element”, attrs = {”class” : re.compile(”정규식”} 으로
    정규식에 포함되는 element 값들을 전부 가져올 수 있음
  • soup.find로 가져온 값에서 다시 find를 통해 하위 element값을 가져올 수 있다.

'python > python_selenium' 카테고리의 다른 글

CSV 기본  (0) 2023.04.23
BeautifulSoup4 활용3  (0) 2023.04.23
BeautifulSoup4 활용1  (0) 2023.04.19
BeautifulSoup4 기본  (0) 2023.04.18
user agent  (0) 2023.04.17
'python/python_selenium' 카테고리의 다른 글
  • CSV 기본
  • BeautifulSoup4 활용3
  • BeautifulSoup4 활용1
  • BeautifulSoup4 기본
몽자비루
몽자비루
코딩공부 정리용 블로그입니다.
  • 몽자비루
    공부하는 블로그
    몽자비루
  • 전체
    오늘
    어제
    • 분류 전체보기 (165) N
      • python (30)
        • python_selenium (16)
        • python_pygame (3)
      • appium (0)
      • 쿠버네티스 (60)
        • linux (8)
        • shell programming (8)
        • docker (18)
        • cka (23)
      • postman&API (16)
      • QA성장하기 (30)
        • 개발자에서 아키텍트로 스터디 (6)
        • 소프트웨어 공학 이해도 높이기 (6)
        • 테스팅 전문 지식 쌓기 (18)
      • 에러일기 (1)
      • AWS (27) N
      • Jmeter (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    cka
    LOSTARK
    공존성테스트
    스터디
    테스트스크립트
    로스트아크
    테스트 결과보고서
    앱공존성
    application log
    쿠버네티스
    리눅스
    도커
    테스트 계획서 만들어보기
    postman
    애플리케이션로그
    사드웨어리소스
    k8s
    e2c
    QAKOREA
    .cpu
    개발자에서아키텍트로
    포스트맨
    API
    linux
    네트워크 테스트
    로스트아크api
    vi에디터
    qa
    python
    테스트 계획서
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
몽자비루
BeautifulSoup4 활용2
상단으로

티스토리툴바