inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

구글 큰 이미지 클롤링에서 자바스크립트로 변경해도 403 : Forbidden Error 발생 합니다.

1104

한병식

작성한 질문수 10

0

for i, img in enumerate(imgs, 1):

    # 이미지를 클릭해서 큰 사이즈를 찾아요

    # 클릭하다 보면 element click intercept error가 나요

    # javascript로  클릭을 직접하도록 만들어 준다.

    #img.click()  # selenium 으로 클릭

    browser.execute_script("arguments[0].click();", img)

    time.sleep(1)

~~~ 에러 내용 ~~~

Traceback (most recent call last):

  File "c:/cra/06_구글_이미지_크롤링/02_큰이미지다운로드.py", line 67, in <module>

    urllib.request.urlretrieve(img_src, f'06_구글_이미지_크롤링\{keyword}\{i}')

  File "C:\python37\lib\urllib\request.py", line 247, in urlretrieve

    with contextlib.closing(urlopen(url, data)) as fp:

  File "C:\python37\lib\urllib\request.py", line 222, in urlopen

    return opener.open(url, data, timeout)

  File "C:\python37\lib\urllib\request.py", line 531, in open

    response = meth(req, response)

  File "C:\python37\lib\urllib\request.py", line 641, in http_response

    'http', request, response, code, msg, hdrs)

  File "C:\python37\lib\urllib\request.py", line 569, in error

    return self._call_chain(*args)

  File "C:\python37\lib\urllib\request.py", line 503, in _call_chain

    result = func(*args)

  File "C:\python37\lib\urllib\request.py", line 649, in http_error_default

    raise HTTPError(req.full_url, code, msg, hdrs, fp)

urllib.error.HTTPError: HTTP Error 403: Forbidden

error 구글큰이미지 웹-크롤링 python 403Forbidden

답변 1

0

스타트코딩

안녕하세요.

코딩을 진짜 쉽게 알려주는 크리에이터 스타트코딩입니다.

 

우선 제가 작성한 코드를 보내 드릴테니

테스트 해보시고 같은 현상이 발생하는 지 여부를 알려주세요~!ㅎㅎ

 

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import os
import urllib.request

if not os.path.exists('06_구글_이미지_크롤링/파이썬'):
    os.mkdir('06_구글_이미지_크롤링/파이썬')

url = "https://www.google.com/search?q=%ED%8C%8C%EC%9D%B4%EC%8D%AC&sxsrf=AOaemvIse43Jtw8xljyc6UWOAF0q9Z5hlw:1641714758371&source=lnms&tbm=isch&sa=X&ved=2ahUKEwi2yfqHmKT1AhWPzmEKHY_sAloQ_AUoAXoECAIQAw&cshid=1641714809694662&biw=1366&bih=625&dpr=1"
browser = webdriver.Chrome("C:/chromedriver.exe")
browser.implicitly_wait(10)
browser.maximize_window()
browser.get(url)

# 무한 스크롤 처리
# 스크롤 전 높이
before_h = browser.execute_script("return window.scrollY")

# 무한 스크롤
while True:
    # 맨 아래로 스크롤을 내린다.
    browser.find_element_by_css_selector("body").send_keys(Keys.END)

    # 스크롤 사이 페이지 로딩 시간
    time.sleep(1)

    # 스크롤 후 높이
    after_h = browser.execute_script("return window.scrollY")
   
    if after_h == before_h:
        break
    before_h = after_h

# 썸네일 이미지 태그 추출
imgs = browser.find_elements_by_css_selector(".rg_i.Q4LuWd")

for i, img in enumerate(imgs, 1):
    # 이미지를 클릭해서 큰 사이즈를 찾아요
    # 클릭하다보면 element click intercepted 에러가 나요
    # javascript 로 클릭을 직접 하도록 만들어주면 됩니다.
    browser.execute_script("arguments[0].click();", img)
    time.sleep(1)

    # 큰 이미지 주소 추출
    if i == 1:
        target = browser.find_elements_by_css_selector("img.n3VNCb")[0]
    else:
        target = browser.find_elements_by_css_selector("img.n3VNCb")[1]

    img_src = target.get_attribute('src')

    # 이미지 다운로드
    # 크롤링 하다보면 HTTP Error 403: Forbidden 에러가 납니다.
    opener = urllib.request.build_opener()
    opener.addheaders = [('User-Agent', 'Mozila/5.0')]
    urllib.request.install_opener(opener)
    urllib.request.urlretrieve(img_src, f'06_구글_이미지_크롤링/파이썬/{i}.jpg')

셀레니움 환경설정 오류

0

74

2

네이버 로그인 관련

0

329

2

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

0

102

1

크롤링 연습사이트 문의

0

120

2

선택자 질문

0

89

2

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

0

89

2

자동 로그인 질문

0

107

2

44강 제목, 링크

0

112

1

원하는 값이 없을 때

0

102

2

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

0

246

2

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

0

106

2

글목록 추출하기

0

107

2

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

0

96

2

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

0

82

2

강의 커리큘럼 질문

0

110

1

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

0

81

2

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

0

104

2

웹페이지 변경

0

77

2

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

1

71

2

수료증은 어떻게 받나요?

0

127

2

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

0

65

2

드라이버가 안 열려요

0

87

2

이거 해결방법 아시는 분?

0

124

2

네이버 지식인 크롤링..

0

212

2