Как получить URL-адрес Google из поискового запроса

Итак, я пытаюсь создать скрипт Python, который будет принимать поисковый запрос или запрос, а затем искать этот термин в Google. Затем он должен вернуть 5 URL-адресов из результата поискового запроса.

Я потратил много часов, пытаясь заставить PyGoogle работать. Но позже выяснилось, что Google больше не поддерживает SOAP API для поиска и не предоставляет новые лицензионные ключи. Короче говоря, на данный момент PyGoogle практически мертв.

Итак, мой вопрос здесь... Какой самый компактный/простой способ сделать это?

Я хотел бы сделать это полностью на Python.

Спасибо за любую помощь


person user3684557    schedule 12.12.2014    source источник


Ответы (3)


Используйте BeautifulSoup и запросы, чтобы получить ссылки из результатов поиска Google.

import requests
from bs4 import BeautifulSoup
keyword = "Facebook" #enter your keyword here
search = "https://www.google.co.uk/search?sclient=psy-ab&client=ubuntu&hs=k5b&channel=fs&biw=1366&bih=648&noj=1&q=" + keyword
r = requests.get(search)
soup = BeautifulSoup(r.text, "html.parser")
container = soup.find('div',{'id':'search'})
url = container.find("cite").text
print(url)
person Arun Sg    schedule 25.04.2018
comment
вы можете рассмотреть возможность добавления поясняющих комментариев к вашему коду - person Yahya Hussein; 25.04.2018

Какие у вас проблемы с pygoogle? Я знаю, что он больше не поддерживается, но я много раз использовал этот проект, и он отлично подойдет для описанной вами черной задачи.

Однако ваш вопрос вызвал у меня любопытство, поэтому я пошел в Google и набрал «python google search». Бам, нашел этот репозиторий. Установил с помощью pip и через 5 минут просмотра их документации получил то, что вы просили:

import google
for url in google.search("red sox", num=5, stop=1):
    print(url)

Может, в следующий раз постараемся немного усерднее, ладно?

person Jacob Bridges    schedule 12.12.2014
comment
Причина, по которой я не использовал этот скрипт, заключалась в том, что он импортирует ОС... которая у меня не работает. Даже установка import os.path не работает. - person user3684557; 12.12.2014
comment
google.py... Я клонировал репозиторий с помощью git и не смог заставить скрипт работать, потому что в строке 3 есть ошибка: import os - person user3684557; 12.12.2014

Здесь ссылка — это библиотека xgoogle, которая делает то же самое.

Я попытался сделать то же самое, чтобы получить 10 лучших ссылок, которые также подсчитывают слова в ссылках, на которые мы ориентируемся. Я добавил фрагмент кода для справки:

import operator
import urllib
#This line will import GoogleSearch, SearchError class from xgoogle/search.py file
from xgoogle.search import GoogleSearch, SearchError
my_dict = {}
print "Enter the word to be searched : "
#read user input
yourword = raw_input()
try:
  #This will perform google search on our keyword
  gs = GoogleSearch(yourword)
  gs.results_per_page = 80
  #get google search result
  results = gs.get_results()
  source = ''
  #loop through all result to get each link and it's contain
  for res in results:
     #print res.url.encode('utf8')
     #this will give url
     parsedurl = res.url.encode("utf8")
     myurl = urllib.urlopen(parsedurl)
     #above line will read url content, in below line we parse the content of that web page
     source = myurl.read()
     #This line will count occurrence of enterd keyword in our webpage
     count = source.count(yourword)
     #We store our result in dictionary data structure. For each url, we store it word occurent. Similar to array, this is dictionary
     my_dict[parsedurl] = count
except SearchError, e:
  print "Search failed: %s" % e
print my_dict
#sorted_x = sorted(my_dict, key=lambda x: x[1])

for key in sorted(my_dict, key=my_dict.get, reverse=True):
    print(key,my_dict[key])
person iNikkz    schedule 12.12.2014