2014-06-16 3 views
0
#!/usr/bin/env python 


import urllib 
import mechanize 
from bs4 import BeautifulSoup 
from urlparse import urlparse 

def getPic(search): 
    search = search.replace(" ","%20") 
    try: 
      browser = mechanize.Browser() 
      browser.set_handle_robots(False) 
      browser.addheaders = [('User-Agent','Mozilla')] 

      htmltext = browser.open("https://www.google.com/search?site=&tbm=isch&source=hp&biw=1855&bih=990&q=" + search + "&oq=" +search) 
      img_url = [] 
      formatted_images = [] 
      soup = BeautifulSoup(htmltext) 
      results = soup.findAll("a") 
      for r in results: 
        try: 
          if "imgres?imgurl" in r['href']: 
            img_url.append(r['href']) 
        except: 
          a=0 
      for im in img_url: 
        refer_url = urlparse(str(img_url[0])) 
        return refer_url.query.split("&")[0].replace("imgurl=","") 
      return formatted_images 


    except: 
      print "error" 
print getPic("occupy wall street") 

출력으로 이미지의 링크를 가져 오는 대신 출력으로 "[]"을 (를) 가져 오는 중입니다. 누군가 내 코드의 문제점을 파악할 수 있습니까?파이썬에서 Google 이미지 검색

+0

Google은 봇을 좋아하지 않습니다. 예를 들어, 실제 브라우저는 'User-Agent : Mozilla'를 사용하지 않으며 Google은이를 알고 있습니다. 서버에서 얻은 정보를 보려면'스프 '를 출력하십시오. – furas

+0

'for im in img_url'에서'return'을 사용하는 이유는 무엇입니까? 'formatted_images'에 무엇을 추가합니까? – furas

답변

0

Google은
이지만 mechanize.Browser()은 (가) JavaScript없이 브라우저와 마찬가지입니다.

브라우저에서 JavaScript를 활성화하고 HTML로 전송 구글에서보십시오.

관련 문제