Запрос на получение ссылки

Как получить href ссылку ?

x = soup.findAll("div", {"class": "o-row"})
for link in x:
    link = link.find('a').get('href')
    print(link)

код выводит не то, что нужно

x


Ответы (1 шт):

Автор решения: gil9red

Причина в том, что ваш поиск возвращал первый тег <a>, а т.к. поиск был только по тегу, то и получали первый попавшийся.

Нужно было в поиске указывать class='title'.

CSS-селектор:

  • .o-row -- поиск элементов с class="o-row"
  • a.title -- поиск элементов с <a class="title">

Пример:

from urllib.parse import urljoin

from bs4 import BeautifulSoup
import requests

rs = requests.get('https://bookvoed.ee/search?q=white+fang')
root = BeautifulSoup(rs.content, 'html.parser')

for row in root.select('.o-row'):
    a = row.select_one('a.title')
    href = urljoin(rs.url, a.get('href'))
    title = a.get_text(strip=True)
    print(title, href)

# White Fang https://bookvoed.ee/goods/4496177
# Белый клык = White Fang https://bookvoed.ee/goods/6807168
# The Call of the Wild and White Fang https://bookvoed.ee/goods/8654867
# White Fang [= Белый Клык] https://bookvoed.ee/goods/451827
# Call of the Wild & White Fang https://bookvoed.ee/goods/4914246

PS.

В href хранятся относительные ссылки, поэтому для удобства добавил код конвертирования в абсолютные ссылки через urljoin

→ Ссылка