как сделать так, чтобы бот искал информацию в интернате и выдавал первые 5 ссылок с ответом на ваш запрос
Первый раз пишу бота на Python для телеграмм. Нужно, чтобы бот умел искать информацию допустим из яндекса(если так можно) и выдавал тебе первые 5 ссылок по твоему запросу
Ответы (1 шт):
Нашёл вот тут парсинг результатов Google. Добавил условие на 5 ссылок
import urllib
import requests
from requests_html import HTMLSession
def get_source(url):
try:
session = HTMLSession()
response = session.get(url)
return response
except requests.exceptions.RequestException as e:
print(e)
def scrape_google(query):
query = urllib.parse.quote_plus(query)
response = get_source("https://www.google.co.uk/search?q=" + query)
links = list(response.html.absolute_links)
google_domains = ('https://www.google.',
'https://google.',
'https://webcache.googleusercontent.',
'http://webcache.googleusercontent.',
'https://policies.google.',
'https://support.google.',
'https://maps.google.')
for url in links[:]:
if url.startswith(google_domains):
links.remove(url)
return links
def get_results(query):
query = urllib.parse.quote_plus(query)
response = get_source("https://www.google.co.uk/search?q=" + query)
return response
def parse_results(response):
css_identifier_result = ".tF2Cxc"
css_identifier_title = "h3"
css_identifier_link = ".yuRUbf a"
css_identifier_text = ".VwiC3b"
results = response.html.find(css_identifier_result)
output = []
i = 0
for result in results:
item = {
'title': result.find(css_identifier_title, first=True).text, #заголовок
'link': result.find(css_identifier_link, first=True).attrs['href'], #ссылка
'text': result.find(css_identifier_text, first=True).text #краткое описание
}
output.append(item)
#берем именно 5 ссылок
i += 1
if i >= 5:
break
return output
def google_search(query):
response = get_results(query)
return parse_results(response)
results = google_search("ВАШ ЗАПРОС")
print(results)
Если вдруг при установке requests_html будет ошибка Could not find function xmlCheckVersion in library libxml2. Is libxml2 installed?, то переходите сюда и качаете файл для своей версии Python и нужной разрядности системы (для меня, например, это lxml-4.9.0-cp311-cp311-win_amd64.whl - версия 3.11 и 64-х разрядная система). Затем устанавливаете его pip install Диск:\путь\до\скачанного\файла\lxml-4.9.0-cp311-cp311-win_amd64.whl