НЕ могу получить ссылку

dodjj

Новичок
Пользователь
Янв 8, 2022
17
1
3
Стандартно пользуюсь:
soup = BeautifulSoup(html, 'html.parser')
получаю:
items = soup.find_all('a', class_='kf-cCRX-a9966')
интересующие меня блоки в которых (распечатал) находится что то вроде:
<a class="kf-cCRX-a9966" href="https://www.kufar.by/item/120232163" target="_blank"><div class="kf-cCRe-2aeee"><img alt="Apple Mac Pro ''Twelve Core'' (Server 2010)" class="kf-cCug-20d1d lazyload" data-src="https://yams.kufar.by/api/v1/kufar-ads/images/85/8555460420.jpg?rule=line_thumbs"/><div...................
Вопрос. Как мне получить ссылку "https://www.kufar.by/item/120232163"?
item = soup.find('a', class_='kf-cCRX-a9966').get('href')
не работает
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
929
207
43
20
Москва
А
Python:
item = soup.find('a', class_='kf-cCRX-a9966')
что-нибудь вообще находит?

Если да, то должно работать, в item должен быть один блок <a>,проверьте
 
  • Мне нравится
Реакции: Domohod45

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
929
207
43
20
Москва
from bs4 import BeautifulSoup
import requests
import csv
HOST = 'https://www.kufar.by'
URL = 'https://www.kufar.by/l/mikrokompyutery/'
HEADERS = {
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0'
}
def get_html(url, params=''):
r = requests.get(url, headers=HEADERS, params=params)
return r

def get_content(html):
soup = BeautifulSoup(html, 'html.parser')

items = soup.find_all('a', class_='kf-cCRX-a9966')

cards = []

for item in items:



non_Syti = item.find('span', class_='kf-cXMx-b3f86')
if non_Syti:
non_Syti = non_Syti.get_text()
else:
non_Syti = 'no Syti'

non_Link = item.find('a', class_='kf-cCRX-a9966')
if non_Link:
non_Link = non_Link.get('href')
else:
non_Link = 'адрес не определен'

cards.append(
{
'Name':item.find('h3', class_='kf-cCsi-64b0e').get_text(strip=True),
'Syti':non_Syti,
'link':non_Link
}
)

return cards
html = get_html(URL)
print(get_content(html.text))

Почему то non_Link = item.find('a', class_='kf-cCRX-a9966') выдает всегда False
Вставь пожалуйста код как код (Как вставить)
 
  • Мне нравится
Реакции: Domohod45

dodjj

Новичок
Пользователь
Янв 8, 2022
17
1
3
Код:
from bs4 import BeautifulSoup
import requests
import csv
HOST = 'https://www.kufar.by'
URL = 'https://www.kufar.by/l/mikrokompyutery/'
HEADERS = {
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0'
}
def get_html(url, params=''):
    r = requests.get(url, headers=HEADERS, params=params)
    return r

def get_content(html):
    soup = BeautifulSoup(html, 'html.parser')

    items = soup.find_all('a', class_='kf-cCRX-a9966')

    cards = []

    for item in items:



        non_Syti = item.find('span', class_='kf-cXMx-b3f86')
        if non_Syti:
               non_Syti = non_Syti.get_text()
        else:
               non_Syti = 'no Syti'

        non_Link = item.find('a', class_='kf-cCRX-a9966')
        if non_Link:
              non_Link = non_Link.get('href')
        else:
               non_Link = 'адрес не определен'

        cards.append(
            {
                'Name':item.find('h3', class_='kf-cCsi-64b0e').get_text(strip=True),
                'Syti':non_Syti,
                'link':non_Link
            }
        )

    return cards
html = get_html(URL)
print(get_content(html.text))
Почему то non_Link = item.find('a', class_='kf-cCRX-a9966') выдает всегда False
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
929
207
43
20
Москва
Он выдает None, так как каждый item сам по себе блок <a> который надо найти, и если в переменную уже записан искомый блок, в нем нельзя найти его же, замените на
Python:
non_Link = item.get('href')
    if not non_Link:
        non_Link = 'адрес не определен'
 
  • Мне нравится
Реакции: Domohod45 и dodjj

dodjj

Новичок
Пользователь
Янв 8, 2022
17
1
3
Огромное спасибо!!! Все заработало. Еще раз спасибо!
 

Форум IT Специалистов