Python在div类之后获得成功

时间:2019-02-08 21:38:21

标签: python web-scraping beautifulsoup

这就是我所拥有的

<div class="investor-item" usrid="75500">
<div class="row">
<div class="col-sm-3">
<div class="number">10,000€</div>
<div class="date">03 December 2018</div>
</div>

我想报废“ 75500”,但不知道如何执行。 当我使用

soup.findAll('div',{"class":"investor-item"})

它没有捕获我想要的。你有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您可以通过多种方式来捕获此信息。你的命令对我有用。尽管由于那里有欧元符号,所以您可能要确保脚本使用正确的编码。另外,请记住,find_all将返回一个列表,而不仅仅是第一个匹配项。

# -*- coding: UTF-8 -*-
from bs4 import BeautifulSoup

html = """
<div class="investor-item" usrid="75500">
<div class="row">
<div class="col-sm-3">
<div class="number">10,000€</div>
<div class="date">03 December 2018</div>
</div>
"""

soup = BeautifulSoup(html, 'lxml')
mytag = soup.find('div', {"class": "investor-item"})
mytag2 = soup.find('div', class_="investor-item")
mytag3 = soup.find_all('div', class_="investor-item")[0]
mytag4 = soup.findAll('div', class_="investor-item")[0]
mytag5 = soup.findAll('div',{"class":"investor-item"})[0]

print(mytag['usrid'])  # Returns 75500
print(mytag2['usrid'])  # Also returns 75500
print(mytag3['usrid'])  # Also returns 75500
print(mytag4['usrid'])  # Also returns 75500
print(mytag5['usrid'])  # Also returns 75500

编辑:以下是我提供的5个不同示例的更多详细信息。

  • Python函数的典型命名约定是使用所有小写和下划线,而其他一些语言则使用驼峰式。因此,尽管find_all()是使用Python在BeautifulSoup中执行此操作的“官方”方式,而findAll是您在BeautifulSoup中针对其他语言所看到的,但是Python似乎也接受它。
  • 如前所述,find_all返回列表,而find返回列表 第一次匹配,因此进行find_all并采用第一个元素 ([0])的结果相同。
  • 最后,{"class": "investor-item"}是可以指定HTML标记名称本身以外的属性的一般方法的示例。您只需在字典中传递其他参数即可,如下所示。但是,由于class是在标记中查找的常见属性,因此BeautifulSoup为您提供了不必使用字典的选择,而是键入class_=后跟您要输入的类名字符串寻找。使用该下划线的原因是,Python不会将其与class(用于在代码中创建 Python 类的Python命令)相混淆。