2017-05-11 3 views
1

je les suivantes html code:Python: sauter des lignes lors de l'analyse du code html et se débarrasser des espaces blancs

html_doc = """ 
<h2> API guidance for developers</h2> 
<h2>Images</h2> 
<h2>Score descriptors</h2> 
<h2>Downloadable XML data files (updated daily)</h2> 
<h2> 
            East Counties</h2> 
<h2> 
            East Midlands</h2> 
<h2> 
            London</h2> 
<h2> 
            North East</h2> 
<h2> 
            North West</h2> 
<h2> 
            South East</h2> 
<h2> 
            South West</h2> 
<h2> 
            West Midlands</h2> 
<h2> 
            Yorkshire and Humberside</h2> 
<h2> 
            Northern Ireland</h2> 
<h2> 
            Scotland</h2> 
<h2> 
            Wales</h2> 
""" 

Comment puis-je sauter les quatre premières lignes et d'accéder aux chaînes de texte telles que East Counties et ainsi de suite ?

Ma tentative ne saute pas les quatre premières lignes et renvoie les chaînes y compris les nombreux espaces blancs intégrés dans le code (que je veux me débarrasser de):

from bs4 import BeautifulSoup 
soup = BeautifulSoup(html_doc, 'html.parser') 
for h2 in soup.find_all('h2'): 
    next 
    next 
    next 
    next 
    print (str(h2.children.next())) 

Le résultat souhaité:

East Counties 
East Midlands 
London 
North East 
... 

Qu'est-ce que je fais mal?

+1

Pourquoi ne pourriez-vous utiliser juste 'soup.find_all ('h2') [4:]'? – Sraw

Répondre

4

Vous pouvez utiliser slicing ici, comme find_all retourne un type de liste afin que vous puissiez jouer avec elle son index, comme [4:] et d'ignorer les espaces blancs utilisent strip()

for h2 in soup.find_all('h2')[4:]: 
    print(h2.text.strip()) 

East Counties 
East Midlands 
London 
North East 
North West 
...  
2
from bs4 import BeautifulSoup 

soup = BeautifulSoup(html_doc, 'html.parser') 

for h2 in soup.find_all('h2')[4:]: # slicing to skip the first 4 elements 
    print(h2.text.strip()) # get the inner text of the tag and then strip the white space