2016-11-28 5 views
0

D'accord, c'est mon code pour un webscraper que j'ai construit. En ce moment, il gratte tout ce que j'ai sélectionné avec de la soupe. Mais quand je regarde le code source de ma page ces données incluent un <br> qui est le saut de ligne.Scraper Python et l'enregistrement des données dans le fichier, j'en ai besoin pour inclure la balise <br> dans le fichier

Lorsque je racle et enregistre tout dans le fichier, ceci est exclu ce qui rend toutes les données dans une ligne sans la balise <br>. Je veux que ce soit là <br> après chaque donnée est écrite dans le fichier comme suit:

Data<br>Data<br>Data<br>Data<br> 

Et pas:

DataDataDataDataData 

est-il de toute façon de modifier actuellement mon code? Je pense que c'est le g = item.text.encode('utf-8') qui le fait enlever le <br>. Je serais heureux si je pouvais inclure le <br> dans le code parce que je peux juste regex il.

try : 
       t_data = soup.find_all("div", {"class": "blockrow restore"}) 
       for item in t_data: 
        f = open('test.txt' , 'w') 
        g = item.text.encode('utf-8') 
        f.write(g) 
        f.close 


      finally: 

Merci.

+0

Pourriez-vous poster un échantillon abrégé du HTML vous gratter, montrant la relation entre les 'div's que vous cherchez pour et les balises
en eux? –

+0

Dans d'autres nouvelles, il semble que votre boucle 'for' pourrait remplacer" test.txt "à chaque itération. Vous voulez probablement l'ouvrir pour [a] ppend au lieu de [w] rite. –

+0

Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
Data
La sortie devient: DataDataDataDataDataDataDataDataData au lieu de: Les données
données
données
données
données
alexanderjoe

Répondre

0

Si vous voulez juste pour capturer les <br> nouvelles lignes, vous pouvez simplement remplacer la balise <br> dans l'élément avec un caractère de nouvelle ligne avant l'analyse syntaxique:

for br in item.find_all("br"): 
    br.replace_with("\n") 

Si vous voulez vraiment préserver le HTML interne du tag, vous pouvez simplement convertir l'élément BeautifulSoup en une chaîne et imprimer que:

g = unicode(item) 
+0

Merci beaucoup, je ne la remplacerai boucle et cela a fonctionné! Merci! – alexanderjoe