Пустой список при парсинге результатов поиска Google - PullRequest
1 голос
/ 21 июня 2020

Я пытаюсь очистить результат поиска Google, но все, что я получаю, это пустой список. Вы хоть представляете, что здесь не так? Я нашел похожий пост в Stack Overflow, где solution говорит, что вам следует попробовать поставить user_agent. Я пробовал, но он все равно ничего не возвращает. Поделитесь, если у вас есть идеи.

import requests, webbrowser
from bs4 import BeautifulSoup

user_input = input("Enter something to search:")
print("googling.....")

google_search = requests.get("https://www.google.com/search?q="+user_input)
# print(google_search.text)

soup = BeautifulSoup(google_search.text , 'html.parser')
# print(soup.prettify())

search_results = soup.select('.r a')
# print(search_results)

for link in search_results[:5]:
    actual_link = link.get('href')
    print(actual_link)
    webbrowser.open('https://google.com/'+actual_link)

Ответы [ 3 ]

3 голосов
/ 21 июня 2020

Google блокирует ваши запросы и выдал эту ошибку. Эта страница появляется, когда Google автоматически обнаруживает запросы, поступающие из вашей компьютерной сети, которые, как представляется, нарушают Условия использования . Блокировка истечет вскоре после прекращения этих запросов. Между тем, решение указанной выше CAPTCHA позволит вам продолжать пользоваться нашими услугами. Этот трафик c мог быть отправлен вредоносным ПО, подключаемым модулем браузера или сценарием, который отправляет автоматические запросы. Если вы используете общее сетевое соединение, обратитесь за помощью к администратору - это может быть другой компьютер, использующий тот же IP-адрес. Узнать больше Иногда вас могут попросить решить CAPTCHA, если вы используете расширенные термины, которые, как известно, используют роботы, или отправляете запросы очень быстро. .

Попробуйте использовать selenium + python, чтобы получить все ссылки

1 голос
/ 21 июня 2020

Большинство веб-сайтов в настоящее время используют JavaScript для динамической загрузки своих веб-страниц. Google - один из таких сайтов. Для загрузки полной DOM (объектной модели документа) вам понадобится движок Javascript, которого у beautifulsoup и запросов нет. Арун порекомендовал селен, и я так и делаю, поскольку он имеет встроенный движок Javascript.

Вот документация Python Selenium: https://selenium-python.readthedocs.io/

0 голосов
/ 21 июня 2020

Чтобы получить результаты со страницы Google, необходимо указать User-Agent http-заголовок. Для результатов engli sh добавьте параметр hl=en в URL-адрес поиска:

import requests
from bs4 import BeautifulSoup


headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:77.0) Gecko/20100101 Firefox/77.0'}

user_input = input("Enter something to search: ")
print("googling.....")

google_search = requests.get("https://www.google.com/search?hl=en&q="+user_input, headers=headers)  # <-- add headers and hl=en parameter

soup = BeautifulSoup(google_search.text , 'html.parser')

search_results = soup.select('.r a')

for link in search_results:
    actual_link = link.get('href')
    print(actual_link)

Выводит:

Enter something to search: tree
googling.....
https://en.wikipedia.org/wiki/Tree
#
https://webcache.googleusercontent.com/search?q=cache:wHCoEH9G9w8J:https://en.wikipedia.org/wiki/Tree+&cd=22&hl=en&ct=clnk&gl=sk
/search?hl=en&q=related:https://en.wikipedia.org/wiki/Tree+tree&tbo=1&sa=X&ved=2ahUKEwjmroPTuZLqAhVWWs0KHV4oCtsQHzAVegQIAxAH
https://simple.wikipedia.org/wiki/Tree
#
https://webcache.googleusercontent.com/search?q=cache:tNzOpY417g8J:https://simple.wikipedia.org/wiki/Tree+&cd=23&hl=en&ct=clnk&gl=sk
/search?hl=en&q=related:https://simple.wikipedia.org/wiki/Tree+tree&tbo=1&sa=X&ved=2ahUKEwjmroPTuZLqAhVWWs0KHV4oCtsQHzAWegQIARAH
https://www.britannica.com/plant/tree
#
https://webcache.googleusercontent.com/search?q=cache:91hg5d2649QJ:https://www.britannica.com/plant/tree+&cd=24&hl=en&ct=clnk&gl=sk
/search?hl=en&q=related:https://www.britannica.com/plant/tree+tree&tbo=1&sa=X&ved=2ahUKEwjmroPTuZLqAhVWWs0KHV4oCtsQHzAXegQIAhAJ
https://www.knowablemagazine.org/article/living-world/2018/what-makes-tree-tree
#
https://webcache.googleusercontent.com/search?q=cache:AVSszZLtPiQJ:https://www.knowablemagazine.org/article/living-world/2018/what-makes-tree-tree+&cd=25&hl=en&ct=clnk&gl=sk
https://teamtrees.org/
#
https://webcache.googleusercontent.com/search?q=cache:gVbpYoK7meUJ:https://teamtrees.org/+&cd=26&hl=en&ct=clnk&gl=sk
https://www.ldoceonline.com/dictionary/tree
#
https://webcache.googleusercontent.com/search?q=cache:oyS4e3WdMX8J:https://www.ldoceonline.com/dictionary/tree+&cd=27&hl=en&ct=clnk&gl=sk
https://en.wiktionary.org/wiki/tree
#
https://webcache.googleusercontent.com/search?q=cache:s_tZIjpvHZIJ:https://en.wiktionary.org/wiki/tree+&cd=28&hl=en&ct=clnk&gl=sk
/search?hl=en&q=related:https://en.wiktionary.org/wiki/tree+tree&tbo=1&sa=X&ved=2ahUKEwjmroPTuZLqAhVWWs0KHV4oCtsQHzAbegQICBAH
https://www.dictionary.com/browse/tree
#
https://webcache.googleusercontent.com/search?q=cache:EhFIP6m4MuIJ:https://www.dictionary.com/browse/tree+&cd=29&hl=en&ct=clnk&gl=sk
https://www.treepeople.org/tree-benefits
#
https://webcache.googleusercontent.com/search?q=cache:4wLYFp4zTuUJ:https://www.treepeople.org/tree-benefits+&cd=30&hl=en&ct=clnk&gl=sk

РЕДАКТИРОВАТЬ: Для фильтрации результатов вы можете использовать это:

import requests
from bs4 import BeautifulSoup


headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:77.0) Gecko/20100101 Firefox/77.0'}

user_input = input("Enter something to search: ")
print("googling.....")

google_search = requests.get("https://www.google.com/search?hl=en&q="+user_input, headers=headers)  # <-- add headers and hl=en parameter

soup = BeautifulSoup(google_search.text , 'html.parser')

search_results = soup.select('.r a')

for link in search_results:
    actual_link = link.get('href')
    if actual_link.startswith('#') or \
       actual_link.startswith('https://webcache.googleusercontent.com') or \
       actual_link.startswith('/search?'):
        continue
    print(actual_link)

Печать (например):

Enter something to search: tree
googling.....
https://en.wikipedia.org/wiki/Tree
https://simple.wikipedia.org/wiki/Tree
https://www.britannica.com/plant/tree
https://www.knowablemagazine.org/article/living-world/2018/what-makes-tree-tree
https://teamtrees.org/
https://www.ldoceonline.com/dictionary/tree
https://en.wiktionary.org/wiki/tree
https://www.dictionary.com/browse/tree
https://www.treepeople.org/tree-benefits
...