Разработал этот очень простой алгоритм, который фильтрует ответы по поисковому запросу от Brainly.com site:
Алгоритм:
from bs4 import BeautifulSoup
import requests
import time
while True:
buscar = input('\033[6;32;1mDigite o Termo de Buscar:\033[m ')
print('Buscando Repostas ....')
data = [{"operationName": "SearchQuery", "variables": {"query":buscar, "after": None, "first": 90},
"query": "query SearchQuery($query: String!, $first: Int!, $after: ID) {\n questionSearch(query: $query, first: $first, after: $after) {\n count\n edges {\n node {\n id\n databaseId\n author {\n id\n databaseId\n isDeleted\n nick\n avatar {\n thumbnailUrl\n __typename\n }\n rank {\n name\n __typename\n }\n __typename\n }\n content\n answers {\n nodes {\n thanksCount\n ratesCount\n rating\n __typename\n }\n hasVerified\n __typename\n }\n __typename\n }\n highlight {\n contentFragments\n __typename\n }\n __typename\n }\n __typename\n }\n}\n"}]
r = requests.post("https://brainly.com.br/graphql/pt", json=data).json()
p=[]
for item in r[0]['data']['questionSearch']['edges']:
rst=(f"https://brainly.com.br/tarefa/{item['node']['databaseId']}")
p.append(rst)
for ele in p:
r = requests.get(ele).text
soup = BeautifulSoup(r,'html.parser')
for n in soup.find_all('div', attrs={'class': 'brn-content-image'}):
ty = (n.find('h1').text)
print("\033[37;31;1m[Title]:\033[m {0}".format(ty))
for t in soup.find_all('div', attrs={'class': 'sg-text js-answer-content brn-rich-content'}):
u=(t.text)
print("\033[6;33;1mResposta: \n \033[m{0}".format(u))
И для работы с этим алгоритмом Я сделал очень простой c интерфейс, созданный в Tkinter
:
from tkinter import *
def resposta():
b['text'] = ' Aguarde! , Procurando Respostas .... '
b['fg'] = 'green'
b['bg'] = 'white'
b['font'] = ('Verdana','9','bold')
i = Tk()
i.title('Respostas Brainly')
i.geometry('800x600')
t = Label(i, text = 'Buscador de Respostas Brainly : ',fg = 'red', font = ('Arial','13','bold'),padx=0, pady=10)
t.pack()
e = Entry(i)
b =Button(i, text = ' Clique ',font = ('Verdana','10','bold'), fg = 'grey', command = resposta,bg = 'black')
e.pack()
'\n'
b.pack()
i.mainloop()
Но я сомневаюсь, что вы заставляете мой алгоритм взаимодействовать с интерфейсом:
Пример: я набираю какой-то запрос термин в поле, и он запускает алгоритм и печатает ответы на экране интерфейса Tkinter
.
То же, что в консоли: