Je souhaite rechercher un texte dans Google à l'aide d'un script python et renvoyer le nom, la description et l'URL de chaque résultat. J'utilise actuellement ce code:
from google import search
ip=raw_input("What would you like to search for? ")
for url in search(ip, stop=20):
print(url)
Cela ne renvoie que les URL. Comment puis-je renvoyer le nom et la description de chaque URL?
Pas exactement ce que je cherchais, mais je me suis trouvé une solution intéressante pour le moment (je pourrais le modifier si je pouvais le rendre meilleur). J'ai combiné la recherche dans Google comme je l'ai fait (en ne renvoyant que l'URL) et le package Beautiful Soup pour l'analyse de pages HTML:
from google import search
import urllib
from bs4 import BeautifulSoup
def google_scrape(url):
thepage = urllib.urlopen(url)
soup = BeautifulSoup(thepage, "html.parser")
return soup.title.text
i = 1
query = 'search this'
for url in search(query, stop=10):
a = google_scrape(url)
print str(i) + ". " + a
print url
print " "
i += 1
Cela me donne une liste du titre des pages et du lien.
Et une autre bonne solution:
from google import search
import requests
for url in search(ip, stop=10):
r = requests.get(url)
title = everything_between(r.text, '<title>', '</title>')
Je suppose que vous utilisez cette bibliothèque de Mario Vilas à cause de l'argument stop=20
qui apparaît dans son code. Il semble que cette bibliothèque ne puisse rien retourner à part les URL, ce qui la rend horriblement sous-développée. En tant que tel, ce que vous voulez faire n'est pas possible avec la bibliothèque que vous utilisez actuellement.
Je vous suggérerais plutôt d'utiliser abenassi/Google-Search-API . Ensuite, vous pouvez simplement faire:
from google import google
num_page = 3
search_results = google.search("This is my query", num_page)
for result in search_results:
print(result.description)
La plupart d’entre eux j’ai essayé d’utiliser, mais cela n’a pas fonctionné pour moi ou a donné des erreurs comme un module de recherche introuvable en dépit de l’importation de packages. Ou j’ai travaillé avec pilote Web Selenium et il fonctionne très bien s’il est utilisé avec Firefox ou chrome ou Navigateur Web fantôme _, mais j’ai quand même estimé qu’il était un peu lent en termes de temps d’exécution, car il interrogeait d’abord le navigateur, puis renvoyait le résultat de la recherche.
Alors j'ai pensé à utiliser Google Api et cela fonctionne incroyablement vite et renvoie les résultats avec précision.
Avant de partager le code, voici quelques astuces à suivre: -
C'est tout et tout ce que vous avez à faire maintenant est d'exécuter ce code: -
from googleapiclient.discovery import build
my_api_key = "your API KEY TYPE HERE"
my_cse_id = "YOUR CUSTOM SEARCH ENGINE ID TYPE HERE"
def google_search(search_term, api_key, cse_id, **kwargs):
service = build("customsearch", "v1", developerKey=api_key)
res = service.cse().list(q=search_term, cx=cse_id, **kwargs).execute()
return res['items']
results= google_search("YOUR SEARCH QUERY HERE",my_api_key,my_cse_id,num=10)
for result in results:
print(result["link"])
Vous pouvez également utiliser un service tiers tel que API Serp qui est un moteur de recherche Google. Il résout le problème de la location de serveurs proxy et de l'analyse des résultats HTML. La sortie JSON est particulièrement riche.
Il est facile d'intégrer Python:
from lib.google_search_results import GoogleSearchResults
params = {
"q" : "Coffee",
"location" : "Austin, Texas, United States",
"hl" : "en",
"gl" : "us",
"google_domain" : "google.com",
"api_key" : "demo",
}
query = GoogleSearchResults(params)
dictionary_results = query.get_dictionary()
GitHub: https://github.com/serpapi/google-search-results-python