#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.