Wyszukiwanie w Google za pomocą Pythona
Chcę przeszukiwać tekst w Google za pomocą skryptu Pythona i zwracać nazwę, opis i adres URL dla każdego wyniku. Obecnie używam tego kodu:
from google import search
ip=raw_input("What would you like to search for? ")
for url in search(ip, stop=20):
print(url)
Zwraca tylko adres URL. jak Mogę zwrócić nazwę i opis dla każdego adresu URL?
5 answers
Zakładam, że używasz tej biblioteki autorstwa Mario Vilasa z powodu argumentu stop=20
, który pojawia się w jego kodzie. Wygląda na to, że ta biblioteka nie jest w stanie zwrócić niczego poza adresami URL, co sprawia, że jest strasznie nierozwinięta. W związku z tym to, co chcesz zrobić, nie jest możliwe z aktualnie używaną biblioteką.
Sugerowałbym zamiast tego użycieabenassi/Google-Search-API . Następnie możesz po prostu zrobić:
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)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-28 12:54:32
Nie exatcly to, czego szukałem, ale znalazłem sobie fajne rozwiązanie na teraz(mogę edytować to, jeśli będę w stanie to poprawić). Połączyłem wyszukiwanie w Google tak jak to zrobiłem (zwracając tylko URL) i piękny pakiet zupy do parsowania stron 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
To daje mi listę tytułów stron i link.
I inne świetne rozwiązania:
from google import search
import requests
for url in search(ip, stop=10):
r = requests.get(url)
title = everything_between(r.text, '<title>', '</title>')
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-25 08:58:12
Większość z nich próbowałem użyć, ale nie wyszło mi lub dał błędy jak search module not found pomimo importowania pakietów. Albo ćwiczyłem z selenium web driver i działa świetnie, jeśli jest używany z Firefox lub chrome lub Phantom web browser, ale nadal czułem, że było to nieco powolne pod względem czasu wykonania, ponieważ najpierw zapytało przeglądarkę, a następnie zwróciło wynik wyszukiwania.
więc pomyślałem o użyciu google api i działa niesamowicie szybko i zwraca wyniki dokładnie.
Zanim udostępnię kod oto kilka szybkich wskazówek do naśladowania:-
- Zarejestruj się na Google Api, aby uzyskać klucz Google Api (darmowa wersja)
- Teraz wyszukaj niestandardowe wyszukiwanie Google i skonfiguruj bezpłatne konto, aby uzyskać niestandardowy identyfikator wyszukiwania
- Teraz dodaj ten pakiet (Google-api-python-client) do swojego projektu Pythona (można to zrobić pisząc !pip install google-api-python-client)
To jest to i wszystko co musisz teraz zrobić to uruchomić ten kod: -
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"])
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-06 01:50:57
Możesz również korzystać z usług stron trzecich, takich jak Serp API , który jest wynikiem wyszukiwarki Google. Rozwiązuje problemy związane z wynajmowaniem serwerów proxy i analizowaniem wyników HTML. Wyjście JSON jest szczególnie bogate.
Łatwo jest zintegrować z Pythonem: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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-23 20:01:20
Zazwyczaj nie można użyć funkcji wyszukiwania google z Pythona, importując pakiet google w python3. ale możesz go użyć w python2.
Nawet przy użyciu żądań.get (url+query) Złomowanie nie zostanie wykonane, ponieważ google zapobiega złomowaniu, przekierowując je na stronę captcha.
Możliwe sposoby:
- możesz napisać kod w python2
- Jeśli chcesz go zapisać w python3, Utwórz 2 pliki i pobierz wyniki wyszukiwania ze skryptu python2.
- Jeśli znaleziono trudno, najlepszym sposobem jest korzystanie z Google Colab lub Jupyter Notebook z python3 runtime. Nie dostaniesz żadnego błędu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-11-07 18:08:16