使用bs4

时间:2019-10-21 13:47:54

标签: python selenium beautifulsoup

我陷入了一个(可能非常简单的)问题。

我正在使用python,chrome Web驱动程序和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对象没有属性“文本”。您可能正在将项目列表像单个项目一样对待。当您打算致电find()时,您是否致电过find_all()?

所以我知道我必须使用for循环,但是我在网上找到的示例通常是这样的:

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

我不明白的是,我在div类中没有标签,所以我必须遍历什么才能得到想要的文本?

非常感谢您的帮助。

祝你有美好的一天

1 个答案:

答案 0 :(得分:1)

如果find.all返回多个值,则应将其视为列表。 这应该打印每个div中的文本。

#find infos
divs = soup.find_all('div', class_="order-line-prod-material ng-binding")
for div in divs:
    print(div.text)