2017-09-24 3 views
0

Dans le tableau que je raccroche, la 2ème rangée est très longue et je voudrais simplement limiter les caractères qui sont dans parce que je ne veux que l'information qui est au début de la chaîne. Je veux gratter les autres lignes comme elles sont. Donc, mon code est le suivant:Comment est-ce que je peux limiter les caractères dans une ligne de table spécifique dans une boucle for (Python/BeautifulSoup)

table = soup.find(id="table3") 
    table_rows = table.findAll('tr') 

    for tr in table_rows: 
     td = tr.findAll('td') 
     row = [i.text.strip() for i in td] 
     print(row) 

Comment puis-je cibler uniquement la deuxième rangée?

La sortie ressemble spécifiquement comme:

["Computer price for Apple Inc. ,\n\n\nType\nForward\n\n\n\n\n\n\nBack\n\n\n\n\nDie\n\r\n... 

Alors je veux seulement grap la Computer price for Apple Inc. partie, peut-être il y a une meilleure façon que d'utiliser simplement la limite de caractères comme une heuristique. Est-il possible de le spécifier pour tout saisir avant?

Répondre

0

Vous pouvez utiliser la fonction de division pour séparer la ligne de texte. J'ai utilisé ",\n\n\n" comme séparateur:

>>> row = 'Computer price for Apple Inc. ,\n\n\nType\nForward\n\n\n\n\n\n\nBack\n\n\n\n\nDie\n\r\n' 
>>> row.split(sep=",\n\n\n", maxsplit=1)[0] 
'Computer price for Apple Inc. ,' 
+0

Merci! mais comment dois-je l'écrire en grattant plusieurs pages, avec chaque page ayant un prix d'ordinateur différent pour une entreprise différente. – Jason

+0

Bon, d'accord, je l'ai compris, merci! – Jason