Próbuję uruchomić kwerendę wyszukiwania google z aplikacji Pythona. Czy istnieje jakiś interfejs python, który pozwoliłby mi to zrobić? Jeśli nie jest nikomu wiadomo, który Google API pozwoli mi to zrobić. Dzięki.Wyszukiwarka Google z aplikacji Pythona
Odpowiedz
Istnieje prosty przykład here (szczególnie brakuje niektórych cytatów ;-). Większość tego, co zobaczysz w internecie, to interfejsy Pythona ze starym, przestarzałym interfejsem SOAP API - przykład wskazuję, że korzystam z nowszego i obsługiwanego interfejsu API AJAX, to zdecydowanie ten, którego potrzebujesz! -)
Edit: tu jest pełniejsza Python 2.6 przykładem wszystkich potrzebnych cytatów & C; -) ...:
#!/usr/bin/python
import json
import urllib
def showsome(searchfor):
query = urllib.urlencode({'q': searchfor})
url = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&%s' % query
search_response = urllib.urlopen(url)
search_results = search_response.read()
results = json.loads(search_results)
data = results['responseData']
print 'Total results: %s' % data['cursor']['estimatedResultCount']
hits = data['results']
print 'Top %d hits:' % len(hits)
for h in hits: print ' ', h['url']
print 'For more results, see %s' % data['cursor']['moreResultsUrl']
showsome('ermanno olmi')
tutaj jest odpowiedź Alexa przeniesiony do Python3
#!/usr/bin/python3
import json
import urllib.request, urllib.parse
def showsome(searchfor):
query = urllib.parse.urlencode({'q': searchfor})
url = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&%s' % query
search_response = urllib.request.urlopen(url)
search_results = search_response.read().decode("utf8")
results = json.loads(search_results)
data = results['responseData']
print('Total results: %s' % data['cursor']['estimatedResultCount'])
hits = data['results']
print('Top %d hits:' % len(hits))
for h in hits: print(' ', h['url'])
print('For more results, see %s' % data['cursor']['moreResultsUrl'])
showsome('ermanno olmi')
Jaka byłaby przewaga korzystania z Pythona 3 nad odpowiedzią Alexa? –
@Phill, nie wiesz co masz na myśli przez "zaletę". Jeśli twój projekt korzysta z Python2, używaj odpowiedzi Alexa. Jeśli projekt korzysta z Python3, możesz użyć tej odpowiedzi.Niestety, pisanie tej funkcji w praktyce nie jest zbyt praktyczne, aby użyć tego samego kodu w obu wersjach Pythona –
. Domyślam się, że moje pytanie brzmi: dlaczego warto używać Python3 w porównaniu z Python2? Jakie są korzyści? Nowość w Pythonie, pochodząca z tła PHP. Czy sprawy są bardziej sformalizowane? –
Oto moje podejście do tego : http://breakingcode.wordpress.com/2010/06/29/google-search-python/
A przykłady kodu para:
# Get the first 20 hits for: "Breaking Code" WordPress blog
from google import search
for url in search('"Breaking Code" WordPress blog', stop=20):
print(url)
# Get the first 20 hits for "Mariposa botnet" in Google Spain
from google import search
for url in search('Mariposa botnet', tld='es', lang='es', stop=20):
print(url)
Zauważ, że ten kod nie korzysta z API Google i nadal pracuje do chwili obecnej (styczeń 2012).
HI Mario, próbowałem użyć twojego scenariusza i jego bajecznego. Mam do czynienia tylko z jedną kwestią - nawet jeśli używam. COM jako TLD, otrzymuję wyniki, które się pojawiają .CO.IN. Czy możesz mi pomóc? –
Pamiętaj, że może to przerwać w dowolnym momencie, ponieważ nie korzysta z oficjalnego interfejsu API, ale jest pobierana na stronie wyników wyszukiwania Google, np. jeśli Google zmieni sposób zwracania wyników. – stracktracer
Jestem nowy w Pythonie i zastanawiałem się, jak to zrobić. Żaden z podanych przykładów nie działa poprawnie. Niektóre z nich są blokowane przez Google, jeśli wykonujesz wiele (kilka) próśb, niektóre są nieaktualne. Parsowanie html wyszukiwania Google (dodanie nagłówka w żądaniu) będzie działało, dopóki google nie zmieni ponownie struktury html. Możesz użyć tej samej logiki do wyszukiwania w dowolnej innej wyszukiwarce, zaglądając do html (view-source).
import urllib2
def getgoogleurl(search,siteurl=False):
if siteurl==False:
return 'http://www.google.com/search?q='+urllib2.quote(search)
else:
return 'http://www.google.com/search?q=site:'+urllib2.quote(siteurl)+'%20'+urllib2.quote(search)
def getgooglelinks(search,siteurl=False):
#google returns 403 without user agent
headers = {'User-agent':'Mozilla/11.0'}
req = urllib2.Request(getgoogleurl(search,siteurl),None,headers)
site = urllib2.urlopen(req)
data = site.read()
site.close()
#no beatifulsoup because google html is generated with javascript
start = data.find('<div id="res">')
end = data.find('<div id="foot">')
if data[start:end]=='':
#error, no links to find
return False
else:
links =[]
data = data[start:end]
start = 0
end = 0
while start>-1 and end>-1:
#get only results of the provided site
if siteurl==False:
start = data.find('<a href="/url?q=')
else:
start = data.find('<a href="/url?q='+str(siteurl))
data = data[start+len('<a href="/url?q='):]
end = data.find('&sa=U&ei=')
if start>-1 and end>-1:
link = urllib2.unquote(data[0:end])
data = data[end:len(data)]
if link.find('http')==0:
links.append(link)
return links
Zastosowanie:
links = getgooglelinks('python','http://www.stackoverflow.com/')
for link in links:
print link
(Edit 1: Dodanie parametru do zawężenia wyszukiwania Google do określonej strony)
(Edit 2: Kiedy dodałem tę odpowiedź byłem kodowania Skrypt w języku Python do wyszukiwania napisów Ostatnio dodałem go do Github: Subseek)
Interesuje mnie, dlaczego żaden z przykładów nie zadziałał, zwłaszcza ten, że BeautifulSoup nie działa, ponieważ kod HTML jest generowany przez JavaScript ... Próbowałem już teraz i działa: http: //breakingcode.wordpress .com/2010/06/29/google-search-python/ – MarioVilas
W moim przypadku nie mogłem korzystać z BeautifulSoup. Testowałem to i wygląda na to, że google generowało odpowiedź html za pomocą bloków javascript, więc nie znalazłem sposobu na uzyskanie linków z klasą BS. Znalazłem tylko linki w odpowiedzi za pomocą funkcji "znajdź". –
Być może adres URL do Google wskazuje na nowszy interfejs API, który używa JavaScript zamiast starszego interfejsu API, który korzystał z gołego kodu HTML. Wydaje mi się, że dodanie "& btnG = Google + Search" w zapytaniach powoduje, że używa on HTML API, a przynajmniej jest to jedyna różnica, którą widzę. – MarioVilas
- 1. Zwykła wyszukiwarka Google
- 2. Wyszukiwarka Google przy użyciu skryptu python
- 3. Wyszukiwarka z 'nie znaczy'
- 4. programowalna wyszukiwarka?
- 5. Dlaczego wyszukiwarka Google za pośrednictwem aplikacji Google api zwraca różne wyniki do wyszukiwania na stronie internetowej?
- 6. Wyszukiwarka Lucene kontra Wyszukiwarka baz danych
- 7. Jaka jest wyszukiwarka używana w nowej dokumentacji Pythona?
- 8. Wyszukiwarka ASP.NET
- 9. Wyszukiwarka fuzzy SQL i ulepszenia podobne do Google
- 10. Wyszukiwarka nazw OpenNLP
- 11. Wyszukiwarka Słowa kluczowe Parser
- 12. elastyczna wyszukiwarka podwójny aspekt
- 13. lekka wyszukiwarka dla asp.net
- 14. elastyczna wyszukiwarka tablica zdobyć
- 15. Wyszukiwarka wyrażeń regularnych
- 16. Postgres Duża wyszukiwarka tekstowa
- 17. Dlaczego otrzymuję CERTIFICATE_VERIFY_FAILED z aplikacji Google Adwords?
- 18. Czy wszelkie ORMy Pythona (SQLAlchemy?) Działają z Google App Engine?
- 19. Objective-c: Szybka rozmyta wyszukiwarka
- 20. lista zainstalowanych aplikacji z Google Play Against kontem Google
- 21. Synchronizowanie danych aplikacji z kontem Google
- 22. Pobierz szczegóły aplikacji z Google Play
- 23. Praca z subdomeną w silniku aplikacji Google
- 24. Włączanie monitora z aplikacji Google TV
- 25. Google Analytics dla strony aplikacji Google Play
- 26. Łączenie Firebase od Pythona Google App Engine
- 27. Monitorowanie aplikacji dla silnika aplikacji Google java
- 28. Programista aplikacji Google: zmień domyślny język aplikacji
- 29. Django stóg_siana: wyszukiwarka, która byłaby lepsza
- 30. Neo4j wyszukiwarka 2,0 wieloznaczny na nazwach etykiet
Próbowałem tego na moim lokalnym komputerze z Linuksem, a potem Google myślał, że jestem botem, a wszelkie wyszukiwania w przeglądarce są captcha "Ed! Nie powinienem był tego wypróbowywać w pracy, po prostu heads-up dla kogoś używającego tego. Dodaj klienta użytkownika i stronę odsyłającą, aby wyglądał bardziej jak prawdziwe żądanie! – ThinkCode
Niestety, [Google Web Search API] (http://code.google.com/apis/websearch/), na który się opiera, został wycofany w listopadzie 2010 r. Interfejs API wyszukiwarki niestandardowej ma zastąpić to, ale wymaga skonfigurowania lista adresów URL do przeszukiwania - nie cała sieć. – Day
na dzień dzisiejszy (2014.06.10), działa ... na moim IPython/Python2.7.6 – kmonsoor