Как получить текстовые данные из информационной панели поиска Google

#python #beautifulsoup #request

#python #beautifulsoup #запрос

Вопрос:

Мне нужно получить текстовые данные из информационной панели поисковой системы Google. Если кто-то использует ключевое слово «siemens» для поиска в поисковой системе Google. Справа от результата поиска Google появится небольшая информационная панель. Я хочу собрать некоторую текстовую информацию для этой информационной панели. Как я могу это сделать, используя requests и Beautifulsoup. вот некоторые из кода, который я пишу.

 from bs4 import BeautifulSoup as BS
import requests
from googlesearch import search
from googleapiclient.discovery import build

url = 'https://www.google.com/search?ei=j-iKXNDxDMPdwALdwofACgamp;q='


com = 'siemens'

#for url in search(com, tld='de', lang='de', stop=10):
#    print(url)

response = requests.get(url com)
soup = BS(response.content, 'html.parser')
  

Выделенная красным область — информационная панель

введите описание изображения здесь

Ответ №1:

Вы можете использовать функцию поиска в BeautifulSoup для извлечения всех элементов с заданным именем класса, идентификатором, css-селектором, xpath и т.д. Если вы проверите информационную панель (щелкните по ней правой кнопкой мыши и укажите «проверить»), вы можете найти уникальное имя класса или идентификатор для этой панели. Используйте это, чтобы отфильтровать только информационную панель из всего вашего html, проанализированного BeautifulSoup.

Проверьте find() и findall() в BeautifulSoup, чтобы получить желаемый результат. Всегда сначала выполняйте поиск по идентификатору, поскольку каждый идентификатор уникален для html-элемента. Если для этого нет идентификатора, перейдите к другим вариантам.

Чтобы получить URL-адрес, используйте google.com/search?q =[] с вашим поисковым запросом внутри []. Для запросов, содержащих более одного слова, используйте знак » » между ними

Комментарии:

1. Но вам нужен URL, чтобы перейти на ту конкретную страницу, где Google показывает все результаты. У меня нет URL этой конкретной страницы. Я использую «поиск» для пакета «Googlesearch».

2. Вы можете использовать google.com/search?q =[ ]. Укажите ваши условия поиска внутри скобки. Используйте для разделения слов. например: если ваш запрос «Лучшие фильмы года», вам нужно указать q= Лучшие фильмы года

Ответ №2:

Убедитесь, что вы используете user-agent для подделки реального посещения пользователя, иначе это может привести к блокировке запроса от Google. Список пользовательских агентов.

Для визуального выбора элементов на странице вы можете использовать расширение Chrome SelectorGadgets для получения CSS-селекторов.

Код и пример в онлайн-среде разработки:

 from bs4 import BeautifulSoup
import requests, lxml

headers = {
    "User-Agent":
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582"
}

response = requests.get('https://www.google.com/search?q=simens', headers=headers).text
soup = BeautifulSoup(response, 'lxml')

title = soup.select_one('.SPZz6b h2').text
subtitle = soup.select_one('.wwUB2c span').text
website = soup.select_one('.ellip .ellip').text
snippet = soup.select_one('.Uo8X3b  span').text
print(f'{title}n{subtitle}n{website}n{snippet}')
  

Вывод:

 Siemens
Automation company
siemens.com
Siemens AG is a German multinational conglomerate company headquartered in Munich and the largest industrial manufacturing company in Europe with branch offices abroad.
  

В качестве альтернативы вы можете использовать API результатов поисковой системы Google из SerpApi. Это платный API с бесплатным планом.

Код для интеграции:

 import os
from serpapi import GoogleSearch

params = {
    "engine": "google",
    "q": "simens",
    "api_key": os.getenv("API_KEY"),
}

search = GoogleSearch(params)
results = search.get_dict()

title = results["knowledge_graph"]["title"]
subtitle = results["knowledge_graph"]["type"]
website = results["knowledge_graph"]["website"]
snippet = results["knowledge_graph"]["description"]
print(f'{title}n{subtitle}n{website}n{snippet}')
  

Вывод:

 Siemens
Automation company
http://www.siemens.com/
Siemens AG is a German multinational conglomerate company headquartered in Munich and the largest industrial manufacturing company in Europe with branch offices abroad.
  

Отказ от ответственности, я работаю в SerpApi.