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 기본
몽자비루
몽자비루
코딩공부 정리용 블로그입니다.
  • 몽자비루
    공부하는 블로그
    몽자비루
  • 전체
    오늘
    어제
    • 분류 전체보기 (173)
      • 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)
      • Server&load (35)
        • AWS (27)
        • load test (5)
        • CI CD (3)
        • Jmeter (0)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.