Найти div класс по подстроке, а затем извлечь полное имя класса - PullRequest
1 голос
/ 10 апреля 2020

Я пытаюсь найти все элементы div, которые содержат подстроку аукциона-результатов, а затем извлечь имя класса. Вот пример:

<div class="auction-results high-bid has-price"></div>

Я могу найти все div'ы, которые содержат 'аукцион-результаты', вот так:

results = soup.select("div[class*=auction-results]")
type(results)
results

Out: [<div class="auction-results high-bid has-price">
     <i class="icon"></i>
     <span class="lot-price">       $700,000</span>
     </div>]

Out: bs4.element.ResultSet

Я хочу сохранить аукцион с полным именем класса -results высокая ставка has-price 'в столбце pandas примерно так:

class_text = ['auction-results high-bid has-price']
'auction-results high-bid has-price'
scraped_data = pd.DataFrame({'class_text': class_text})
scraped_data

                            class_text
0   auction-results high-bid has-price

Я еще не нашел решения, поэтому надеюсь, что кто-нибудь может мне помочь, спасибо!

Ответы [ 2 ]

1 голос
/ 10 апреля 2020

См. Этот пример ниже. вы можете рассматривать его как html документ и использовать l xml для анализа полного имени.

from lxml import html


results = '<div class="auction-results high-bid has-price"><i class="icon"></i><span class="lot-price">$700,000</span></div>'
tree = html.fromstring(results)
name = tree.xpath("//div[contains(@class,'auction-results')]/@class")

print(name)

Он печатает полное имя класса

[' ставка имеет цену ']

1 голос
/ 10 апреля 2020

Попробуйте так:

columns = ['class_text']
rows = []
for result in results:
    rows.append(' '.join(result['class']))
scraped_data = pd.DataFrame([rows],columns=columns)
scraped_data

Вывод:

    class_text
0   auction-results high-bid has-price
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...