2017-12-22 1 views
2

여기에서 이미지를 가져 오려고합니다.requests.get()에서 더 많은 태그를 얻는 방법

https://www.google.co.kr/search?q=dog&rlz=1C1MSIM_koKR747KR747&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjSn7Hm053YAhWLmpQKHXRpAh4Q_AUICigB&biw=1440&bih=794

당신은 크롬 개발자 도구를 사용하여 'IMG'태그를 많이 있다는 것을 확인할 수 있습니다. 그러나 아래 코드를 실행하면 숫자 21을 보러 실망합니다. 어떻게 늘릴 수 있습니까?

r=requests.get(url) 
soup=bsp(r.text,'lxml') 
len(soup.find_all('img')) 

답변

2

Google이 가져온 정적 페이지에는 실제로 이미지 검색 결과가 포함되지 않는 것이 문제입니다. 검색 결과에 포함 된 이미지를 가져 오면 Google 로고와 일부 구조 이미지 (검색 정제를 제안하는 데 사용하는 태그)를 찾을 수 있습니다.

실제 이미지는 자바 스크립트 코드에 의해 느슨하게로드되며 요청을 사용하여 이미지를 가져 오는 것이지만 페이지의 클라이언트 코드가 브라우저의 도구를 사용하여 요청한 요청을 확인한다는 의미입니다. 대신에 그것들을 흉내 낸다. 이는 Google이 일부 토큰을 삽입하고 페이지의 자바 스크립트에서 리버스 엔지니어링하기가 매우 어려울 수있는 지연 요청에 사전 계산을하기 쉽기 때문에 가능할 수도 있고 그렇지 않을 수도 있습니다. 또한 Google의 이미지 검색 이용 약관을 위반할 가능성이 큽니다.

요청 대신 웹 검색을 수행하려면 Selenium으로 전환 해보세요. 실제 브라우저를 사용하므로 Javascript를 실행하고 실제 게으른 요청을합니다. 정상적으로 작동하지만 사이트의 이용 약관을 여전히 침해 할 것이며 결과에 captcha가 표시되기까지 오래 걸리지 않을 수도 있습니다.

따라서 서비스 제공 업체 (이 경우 Google 이미지 검색)에 검색을 수행하는 데 사용할 수있는 공개 API가 있는지 확인하는 것이 올바른 방법입니다. 검색 할 때 Google 이미지 검색 API가 더 이상 사용되지 않으며 Google 검색 API를 사용하여 이미지를 찾을 수 있음을 알 수 있습니다. 현재 그들은 하루에 100 회의 무료 검색을 허용하고 그 이후에 서비스 요금이 부과됩니다. 여기

이 API를 이해하고, 아마 서명 업

https://developers.google.com/custom-search/json-api/v1/overview?csw=1

을 당신이 이해하고 API 키를 얻는 완료 후 그들의 링크, 당신을 절약 할 수있는 API에 대한 파이썬 래퍼가 두통의 많은 가능성이 이미지를 당신에게 URL을 제공 :

https://pypi.python.org/pypi/Google-Search-API

+1

당신에게 긴 답변 대단히 감사합니다 !!!! 그것은 매우 도움이됩니다. 그러나 답변에 관계없이 한 검색에서 사진을 찾는 대신 여러 번 virous 검색 키워드를 적용하여 문제를 해결했습니다. 어쨌든 내 코드는 한 번의 검색으로 20 개의 사진을 얻을 수 있습니다. – Muzzi

관련 문제