inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

웹브라우저 기능 조작 한방에 끝내기

gui로 검색어 변경 시 다른 내용이 나와요!

227

찬솔

작성한 질문수 6

0

안녕하세요! 크롤링 진행중입니다!

제가 keyword 변수에 gui 를 사용해서 검색어를 input하는 방식으로 이용중입니다.

 

그냥 경로를 넣었을 때는 검색어가 잘 나오는데, gui를 사용하면 다른 내용이 나옵니다. 저의 결과로는 책을 크롤링해오고 있습니다.. 무엇이 문제일까요 ㅠㅠ

 

import requests
from bs4 import BeautifulSoup

import time
import pyautogui

keyword = pyautogui.prompt('검색어를 입력하세요.')
path = 'https://www.coupang.com/np/search?q={keyword}&channel=recent'

# 헤더에 User-Agent, Accept-Language 를 추가하지 않으면 멈춤
header = {
    'Host': 'www.coupang.com',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'Accept-Language': 'ko-KR,ko;q=0.8,en-US;q=0.5,en;q=0.3',
}

response_1 = requests.get(path, headers=header)
html = response_1.text
soup_1 = BeautifulSoup(html, 'html.parser')

links = soup_1.select('a.search-product-link')
    
for link in links:
    # 광고상품 제거
    if len(link.select('span.ad-badge-text')) > 0:
        print('광고 상품 입니다.')
    else:
        sub_path = 'https://www.coupang.com/' + link.attrs['href']
        # print(sub_path)
        response_2 = requests.get(sub_path, headers=header)
        html = response_2.text
        soup_2 = BeautifulSoup(html, 'html.parser')
        
        # 회사 - 있을 수도 있고, 없을 수도 있음.
        # 중고상품은 태그가 달라짐
        try:
            brand_name = soup_2.select_one('a.prod-brand-name').text
        except:
            brand_name = ""
        # 제품명
        product_name = soup_2.select_one('h2.prod-buy-header__title').text
        # 가격
        try:
            product_price = soup_2.select_one('span.total-price > strong').text
        except:
            product_price = 0
            
        print(brand_name, product_name, product_price)


print('\nDvlp.H.Y.C.Sol\n')



python 웹-크롤링

답변 2

0

스타트코딩

f-string 으로 바꾸어 주셔야 해요 ㅎㅎ

path = f'https://www.coupang.com/np/search?q={keyword}&channel=recent'

0

인프런 AI 인턴

안녕하세요 찬솔님, 인프런 AI 인턴이에요.

문제의 원인은 pyautogui.prompt() 함수를 사용하여 검색어를 입력받아 path 변수에 넣어주려고 하실 때 발생한 것 같습니다. path 변수에 넣어야하는 값을 바르게 전달해주기 위해서는 format() 메소드를 사용하거나 f-string을 활용하셔야 합니다.

예를 들어, path 변수를 아래와 같은 방식으로 수정하셔야 합니다.

path = f'https://www.coupang.com/np/search?q={keyword}&channel=recent'
# 또는
path = 'https://www.coupang.com/np/search?q={}&channel=recent'.format(keyword)

변경된 코드로 다시 실행하시면 예상대로 검색어가 적용된 페이지로 접근할 수 있을 것입니다. 문제점 해결에 도움이 되었길 바랍니다. 감사합니다!

0

스타트코딩

오 이거는 정확한 답변 인데요?

AI인턴 요건 잘해주네

셀레니움 환경설정 오류

0

46

2

네이버 로그인 관련

0

255

2

안녕하세요 셀레니움에 대해서 질문

0

85

1

크롤링 연습사이트 문의

0

96

2

선택자 질문

0

71

2

'특정 요소가 나타날 때까지 스크롤' 부분 에러

0

76

2

자동 로그인 질문

0

86

2

44강 제목, 링크

0

105

1

원하는 값이 없을 때

0

89

2

크롤링한 링크가 엑셀로 들어가면 작동이 안되요

0

227

2

셀레니움 PDF자료는 받을 수 있나요

0

100

2

글목록 추출하기

0

97

2

메일 자동화 로그인 중복방지문자해결 오류 및 명시적 대기 질문

0

88

2

강의 노트가 어디에 있는건가요?

0

80

2

강의 커리큘럼 질문

0

98

1

조건문 else 사용하지 않는 이유

0

76

2

셀레니움으로 접근할 수 없는 경우

0

95

2

웹페이지 변경

0

70

2

자바스크립트로 태그 선택 시 질문입니다.

1

64

2

수료증은 어떻게 받나요?

0

120

2

class명을 활용하여 선택자를 만들지 않는 경우..?

0

60

2

드라이버가 안 열려요

0

79

2

이거 해결방법 아시는 분?

0

121

2

네이버 지식인 크롤링..

0

201

2