2017-02-19 72 views
0

的HTML代码我有(这些条目的倍数)是这样的:美丽的汤 - 让标签内容

<p class="number-values"> 
    <span class="text">Count:</span> 
    <span data-value="10000" name="nv">10,000</span> 
    <span class="devider">#</span> <span class="text">Number:</span> 
    <span data-value="500,000" name="nv">0.05</span> 
</p> 

现在,我希望得到的数据值标签的内容。我到目前为止已经写的是:

url = http://example.com 
source = urllib.request.urlopen(url).read() 
soup = bs.BeautifulSoup(source,"lxml") 

contents = soup.find_all("p", class_="number-values") 

for content in contents: 
    print(content.string) 

然而,这个输出(包括了很多无谓的回报我无法弄清楚):

Count: 

10,000 

# 

Number: 

0,05 

我似乎无法找到正确的标签提取,也许我应该regex整个字符串?

回答

1

这有一定道理,因为你给他的类p标签返回其子标签的所有文本。如果你只想10,0000,05你应该通过跨段标签搜索与具有属性name = "nv"

for content in soup.find_all("span" , {"name" : "nv"}): 
    print (content.text) # 10,000 0,05 
+0

这个工程。虽然我还不确定如何。谢谢! – Jos

0

尝试

contents = soup.find_all("p", {"class":"number-values"})