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

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

zhekaxak

Гуру форума
Регистрация
16 Авг 2007
Сообщения
354
Реакции
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), как от них избавится?

Спасибо!
 
с первой задачей разобрался так:
Код:
    for bread in viewPage.select("#path > a"):
        data['path'] += bread.text + "/"
а вот со второй пока ничего :(
 
с первой задачей разобрался так:
Код:
    for bread in viewPage.select("#path > a"):
        data['path'] += bread.text + "/"
а вот со второй пока ничего :(
Как один из вариантов сделать списком содержимое и взять только те теги, которые нужны.
 
Здравствуйте. Тоже проблема с BeautifulSoup....
Код:
table = soup.find('div', class_='cols_table')
Проблема в том, что на странице 2 дива с похожими классами и выдёргивается первый (не нужный мне) class="wrapper cols_table no_hover"
Как конкретизировать?..
 
Здравствуйте. Тоже проблема с BeautifulSoup....
Код:
table = soup.find('div', class_='cols_table')
Проблема в том, что на странице 2 дива с похожими классами и выдёргивается первый (не нужный мне) class="wrapper cols_table no_hover"
Как конкретизировать?..

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