j'ai écrit un grattoir d'image Google en Python en utilisant urllib2 et bibliothèque BeautifulSoup, qui envoie une requête de recherche en utilisant l'URL, y compris la requête et va chercher alors la liens vers les 10 premières images. Ce que je besoin est le lien direct de l'image, par exemple:résultat différent code html (UI) entre l'utilisation grattoir google image écrit en Python vs navigateur web
Quand je recherche pour la requête en utilisant mon navigateur (ce qui est Chrome) et afficher le code HTML de l'image page de résultats de recherche, la code inclut l'URL directe à l'image (comme ci-dessus), ainsi que l'URL de la page qui comprend l'image:
http://mentalfloss.com/article/49222/11-unserious-photos-albert-einstein
Cependant, le code HTML de la page de résultats de recherche que je me l'aide de mon grattoir python n'inclut pas l'URL directe de l'image, mais uniquement l'URL de l'original l page qui comprend l'image. Lorsque je sauvegarde le résultat HTML et affiche le fichier sur mon navigateur, il montre une ancienne interface de recherche d'images Google. Cliquer sur l'une des vignettes provoquerait un 'Votre fichier n'a pas été trouvé. Il se peut que l'erreur ait été déplacée ou supprimée.
Je suis conscient que les paramètres de recherche lors de l'utilisation de l'application du navigateur et l'envoi d'une requête d'URL en utilisant la bibliothèque de python sont différentes, mais je ne suis pas sûr que le paramètre est à l'origine de cette différence.
J'attaché images aux deux interfaces de résultats différents (ci-dessus est le résultat page HTML de mon grattoir python, fond est le résultat du navigateur Chrome)
Et ici fait partie de mon script:
def search_image_google(name):
google_url = "https://www.google.com/search?btnG=Search&site=webhp&tbm=isch&source=hp&q={}"
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'}
url = google_url.format(urllib2.quote(name+' face'))
try:
page = requests.get(url).text
soup = BeautifulSoup(page, 'html.parser')
result = soup.prettify("utf-8")
with open('output.html', 'wb') as file:
file.write(result)
cnt = 0
for link in soup.find_all('table', class_ = 'images_table'):
for child in link.contents:
for row in child:
if cnt > 9:
break;
else:
img_link = str(row.a['href'])[7:]
cnt += 1
print(img_link)
except Exception as e:
print('Exception: %s' % str(e))
Aidez-nous!
Votre solution simple l'a fait. J'ai examiné les en-têtes que mon Chrome envoie, et ajouté plus de paramètres autres que l'user-agent, et il semble me donner l'URL de l'image originale dont j'ai besoin. Merci beaucoup. – user3052069