2017-02-19 11 views
0

HTML-код у меня есть (несколько из этих записей) выглядит следующим образом:Beautiful Soup - получать содержимое тегов

<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 

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

ответ

1

Это имеет смысл, потому что вы дали ему класс для p тега она возвращает весь текст его дочерних тегов. если вы хотите просто 10,000 и 0,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"})