0

저는 파이썬을 배우고 웹 스크래핑을 시도했습니다. 페이지가 idk가 가치가 떨어졌음에도 불구하고 Google 검색 결과 페이지를 긁어 낼 수있었습니다. Google 이미지 검색도 동일하게 시도되었으며 마찬가지로 감가 상각되었습니다. 브라우저에 나타나는 것과 같지 않습니다.요청한 것과 동일한 페이지가 표시되지 않는 이유는 무엇입니까?

Here 내 코드.

from bs4 import BeautifulSoup 
import requests 
from PIL import Image 
from io import BytesIO 

search = input("Search for : ") 
params = {"tbm": "isch", "source": "hp", "q": search} 
r = requests.get("https://www.google.com/search", params=params) 
print("URL :", r.url) 
print("Status : ", r.status_code, "\n\n") 

f = open("ImageResult.html", "w+") 
f.write(r.text) 

예를 들어 "Goku"를 검색합니다. Google 이미지에서 this 페이지를 반환합니다.

첫 번째 이미지를 클릭하면 팝업이 열립니다. 또는 Ctrl + 클릭을 누릅니다. 나는 this 페이지에 이른다.

이 페이지에서 "이미지보기"버튼에서 현재 URL 또는 링크를 통해 실제 이미지의 URL에 액세스 할 수 있습니다. 하지만 문제는이 페이지를 요청할 때 얻을 수있는 페이지 버전에서이 페이지/팝업에 연결할 수 없다는 것입니다.

업데이트 : 나는 page을 공유하고 있습니다.

+1

첫 번째 : Google은 일반적으로 요소를 넣기 위해 JavaScript를 사용하는 페이지를 보냅니다. 브라우저가 javaScript를 사용하지 않으면 다른 태그가있는 페이지를 보냅니다. 'requests'는 자바 스크립트를 실행할 수 없으므로 브라우저에있는 태그와 다른 태그를 가져오고 Chrome/Firefox의 DevTool에 표시됩니다. 따라서 브라우저에서 자바 스크립트를 끄고 Google에로드하여'요청 '이 얻을 수있는 것을 확인하십시오. – furas

+0

고맙습니다.'@ furas', 제가 찾고 있던 정확한 답변이었습니다 !! JavaScript를 실행할 수있는'requests'에 대한 대안이 있습니까? 내 필요에 따라 자바 스크립트 사용 가능 출력이 필요하다고 생각합니다. –

+1

[Selenium] (http://selenium-python.readthedocs.io/)을 사용하면 페이지를로드하고 JavaScript를 실행할 브라우저를 제어 할 수 있습니다. "헤드리스"브라우저 (브라우저 창을 디 레이링하지 않음)를 사용할 수도 있습니다. [PhantomJS] (http://phantomjs.org/) 및 [PhantomPy] (https://phantompy.readthedocs.io/en/latest/). [Splash] (https://splash.readthedocs.io/en/stable/)도 참조하십시오. 그러나 JavaScript를 사용하지 않는 Google 페이지에서 작업하려고합니다. 주로 동일한 데이터가 있지만 HTML 태그가 다릅니다. 'Selenium'은 브라우저를 사용해야하므로 느리게 작동합니다. – furas

답변

0

이것은 사용자 에이전트 문자열, 쿠키 및 Google 실험과 같은 많은 요인에 따라 다릅니다. Google은 많은 사용자에게 동일한 콘텐츠를 제공하는 것으로 유명합니다. 검색시 Google은 사이트 속도 및 사용자 에이전트를 기반으로 다른 페이지를로드합니다 .Google은 또한 A/B 테스트를 동적으로 구현하기 위해 검색 페이지 디자인 등에 대한 실험을 무작위로 실행합니다 .

+0

와우! 내가하려는 일에 대한 대안? –

+0

예. 파이썬 출력을 기반으로 웹 파서 또는 스크레이퍼를 디자인하고 더 나은 클래스 및 데이터 일반화를 시도 할 수 있습니다. 어떤 실험을 피하도록 스크립트를 다시로드 해 볼 수도 있습니다. 답이 맞으면 upvote하십시오. –

관련 문제