Извлечь текст из div с помощью bs4 - PullRequest
0 голосов
/ 21 октября 2019

Я застрял в (возможно, очень простой) проблеме.

Я очищаю веб-сайт, используя python, chrome web driver и selenium.

Так что я мог найти divклассы с информацией, но я не могу извлечь текст внутри.

Ниже приведен код, который я использую:

 html = driver.page_source
print(html)

soup = bs4(html, "lxml")

#find infos
div = soup.find_all('div', class_="order-line-prod-material ng-binding")
div

, а затем вывод:

[<div class="order-line-prod-material ng-binding">AQ4174-010</div>,
 <div class="order-line-prod-material ng-binding">AQ4176-010</div>,
 <div class="order-line-prod-material ng-binding">AT7899-010</div>,
 <div class="order-line-prod-material ng-binding">AT7900-010</div>,
 <div class="order-line-prod-material ng-binding">AT7975-010</div>,
 <div class="order-line-prod-material ng-binding">AT8120-010</div>,
 <div class="order-line-prod-material ng-binding">AT8153-010</div>]

когда я пытался использовать:

div.text

Я получаю следующее сообщение об ошибке:

У объекта ResultSet нет атрибута 'text'. Вы, вероятно, рассматриваете список предметов как отдельный предмет. Вы вызывали find_all (), когда намеревались вызвать find ()?

Так что я знаю, что должен использовать цикл for, но примеры, которые я нашел в Интернете, обычно идут примерно так:

for a in div.find_all('a'):
    print(a.text)

Вещь, которую я не понимаю, в том, что у меня нет тега внутри класса div, так что по поводу того, что мне нужно сделать, чтобы получить нужный текст?

Действительно признателен за вашу помощь.

Хорошего дня

1 Ответ

1 голос
/ 21 октября 2019

если есть несколько значений, возвращаемых find.all, то это следует рассматривать как списки. Это должно напечатать текст из каждого div.

#find infos
divs = soup.find_all('div', class_="order-line-prod-material ng-binding")
for div in divs:
    print(div.text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...