подскажите по BeautifulSoup

Статус
В этой теме нельзя размещать новые ответы.

zhekaxak

Гуру форума
Регистрация
16 Авг 2007
Сообщения
346
Реакции
79
Только начал учить питон и решил попробовать написать парсер сайта с использованием BeautifulSoup
Застрял на нескольких моментах и никак не могу понять как сделать

Пытаюсь спарсить хлебные крошки
Код:
data['path'] = viewPage.select("#path > a")
результат:
Код:
path': [<a href="./">Главная</a>, <a href="catalog/">Каталог</a>, <a href="catalog/category">Категория</a>, <a href="catalog/subcategory/">Подкатегория</a>]
все отлично, они берутся, но как получить не полностью тег a, а только текст?
в такой конструкции работает
Код:
data['name'] = viewPage.find('h1').text
дописываю также к хлебным крошкам
Код:
data['path'] = viewPage.select("#path > a").text
выдает ошибку: builtins.AttributeError: 'list' object has no attribute 'text'

И второй момент, как не брать определенные теги
Допустим нужно описание
Код:
data['desc'] = viewPage.select("#description")
Но внутри decription есть много лишнего (img, form, table), как от них избавится?

Спасибо!
 

zhekaxak

Гуру форума
Регистрация
16 Авг 2007
Сообщения
346
Реакции
79
с первой задачей разобрался так:
Код:
    for bread in viewPage.select("#path > a"):
        data['path'] += bread.text + "/"
а вот со второй пока ничего :(
 

savvadesogle

Создатель
Регистрация
19 Мар 2014
Сообщения
22
Реакции
6
с первой задачей разобрался так:
Код:
    for bread in viewPage.select("#path > a"):
        data['path'] += bread.text + "/"
а вот со второй пока ничего :(
Как один из вариантов сделать списком содержимое и взять только те теги, которые нужны.
 

mvvalerievich

Писатель
Регистрация
19 Дек 2016
Сообщения
1
Реакции
0
Здравствуйте. Тоже проблема с BeautifulSoup....
Код:
table = soup.find('div', class_='cols_table')
Проблема в том, что на странице 2 дива с похожими классами и выдёргивается первый (не нужный мне) class="wrapper cols_table no_hover"
Как конкретизировать?..
 

eTorres

Писатель
Регистрация
17 Ноя 2018
Сообщения
2
Реакции
0
Здравствуйте. Тоже проблема с BeautifulSoup....
Код:
table = soup.find('div', class_='cols_table')
Проблема в том, что на странице 2 дива с похожими классами и выдёргивается первый (не нужный мне) class="wrapper cols_table no_hover"
Как конкретизировать?..

Искать не по классу, которых может быть много, а по xpath. В нем уже собирать уточненный путь для выборки нужного вам элемента. Приведите примеры html-блоков. Без них точнее сложно сказать
 

nsd_net

Создатель
Регистрация
12 Июл 2009
Сообщения
29
Реакции
7
Искать не по классу, которых может быть много, а по xpath. В нем уже собирать уточненный путь для выборки нужного вам элемента. Приведите примеры html-блоков. Без них точнее сложно сказать
и использовать не beautifulsoup а lxml, он быстрее
 

ak100

Постоялец
Регистрация
14 Сен 2011
Сообщения
61
Реакции
15
Здравствуйте. Тоже проблема с BeautifulSoup....
Код:
table = soup.find('div', class_='cols_table')
Проблема в том, что на странице 2 дива с похожими классами и выдёргивается первый (не нужный мне) class="wrapper cols_table no_hover"
Как конкретизировать?..
Как вариант, можно сделать так
Код:
table = soup.find_all('div', class_='cols_table')[1]
Вариант не идеальный конечно.. Но имеет место быть
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху