Как сделать так, чтобы
Хочу сделать бот-парсер Флибусты, который бы принимал поисковую фразу, и выдавал ссылки на результаты поиска, и он действительно выдает ссылки, но некорректно. Ссылки многие не относятся к поисковому запросу и мне выдает тупо рандомные ссылки. Мне ещё надо скопировать текст из тега b, так и не смог разобраться, как это сделать
"a href="/b/372947" b Затерянный /b b Остров /b"
Это HTML с флибусты, т.е мне надо так, чтобы элемент списка выглядел так: '/b/372947/ - Затерянный остров'.
def f():
url = 'https://flibusta.is/booksearch?ask=%D0%B7%D0%B0%D1%82%D0%B5%D1%80%D1%8F%D0%BD%D0%BD%D1%8B%D0%B9+%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B2&chs=on&cha=on&chb=on'
r = requests.get(url)
bs = BeautifulSoup(r.content, "html.parser")
t = bs.findAll("a")
d = []
for u in t:
href = u.attrs.get("href")
if str(href).__contains__("/b/"):
d.append(href)
else:
continue
print(d)
f()
Выводит программа следующее:
['/b/372947', '/b/399965', '/b/72322', '/b/536707', '/b/755220', '/b/764869', '/b/731620', '/b/296081', '/b/749918', '/b/780530', '/b/763040', '/b/736443', '/b/780858', '/b/454563', '/b/780354']
Подскажите пожалуйста, как вместе с href спарсить и название книги в теге b?
Ответы (1 шт):
import requests
from bs4 import BeautifulSoup
text = 'затерянный остров'
url = f'https://flibusta.is/booksearch?ask={text.replace(" ", "+")}&cha=on&chb=on'
r = requests.get(url)
bs = BeautifulSoup(r.content, "html.parser")
# t = bs.findAll("ul")[1]
# t = t.findAll("li")
t = bs("ul")[1]("li")
d = [[f"https://flibusta.is/{u.a['href']}", u.a.text] for u in t]
# u.text Затерянный остров - Джон Бойнтон Пристли
print(d)