这就是我所拥有的
<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"})
它没有捕获我想要的。你有什么建议吗?
答案 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个不同示例的更多详细信息。
find_all()
是使用Python在BeautifulSoup中执行此操作的“官方”方式,而findAll
是您在BeautifulSoup中针对其他语言所看到的,但是Python似乎也接受它。 find_all
返回列表,而find
返回列表
第一次匹配,因此进行find_all
并采用第一个元素
([0]
)的结果相同。{"class": "investor-item"}
是可以指定HTML标记名称本身以外的属性的一般方法的示例。您只需在字典中传递其他参数即可,如下所示。但是,由于class
是在标记中查找的常见属性,因此BeautifulSoup为您提供了不必使用字典的选择,而是键入class_=
后跟您要输入的类名字符串寻找。使用该下划线的原因是,Python不会将其与class
(用于在代码中创建 Python 类的Python命令)相混淆。