DATA =
<td class="dojoxGridCell" idx="3" role="gridcell" style="width:40%;" tabindex="-1">ROOF PLAN</td> ...
3 Réponses :
S'il vous plaît essayer ci-dessous le code. Mais en général, si vous passez à IDX = 3, il ne renvoie qu'un seul élément. Si vous souhaitez extraire le texte de plusieurs éléments, vous pouvez utiliser un identifiant plus général.
import lxml from lxml import html html_string = """ <div class="dojoxGridView" id="dojox_grid__View_1" role="presentation" style="width: 1900px; height: 721px; left: 1px; top: 0px;" widgetid="dojox_grid__View_1"> <input class="dojoxGridHiddenFocus" dojoattachpoint="hiddenFocusNode" role="presentation" type="checkbox"/> <input class="dojoxGridHiddenFocus" role="presentation" type="checkbox"/> <div class="dojoxGridScrollbox" dojoattachpoint="scrollboxNode" role="presentation" style="height: 721px;"> <div class="dojoxGridContent" dojoattachpoint="contentNode" hidefocus="hidefocus" role="presentation" style="height: 504px; width: 1900px;"> <div role="presentation" style="position: absolute; left: 0px; top: 0px;"> <div aria-selected="false" class="dojoxGridRow" role="row" style=""> <table border="0" cellpadding="0" cellspacing="0" class="dojoxGridRowTable" role="presentation" style="width: 1900px;"> <tbody> <tr> <td class="dojoxGridCell" idx="0" role="gridcell" style="display:none;width:100px;" tabindex="-1"> 78126 </td> <td class="dojoxGridCell" idx="1" role="gridcell" style="width:10%;" tabindex="-1"> Approved Plan </td> <td class="dojoxGridCell" idx="2" role="gridcell" style="width:10%;" tabindex="-1"> G-10 </td> <td class="dojoxGridCell" idx="3" role="gridcell" style="width:40%;" tabindex="-1"> ROOF PLAN </td> </tr> </tbody> </table> </div> </div> </div> </div> </div> """ tree = html.fromstring(html_string) ROOFPLAN = tree.xpath('//tbody/tr//td[@idx="3"]/text()') print(''.join(ROOFPLAN).strip())
TypeError: Chaîne attendue ou objet de type octet
upvote, au fait, contrairement à BS4, il n'a pas de "," entre la chaîne, puis-je l'exporter en csv ou à des pandas? Cela donne quelque chose comme le planleur de toiture Fl. Planground fl. Plangron fl. Plan2nd fl. plan3r . Plan et 16e fl. Plan au 18e fl. Plan15th FL15th FL.19ème FL. Planification du plan 2010 Plan au 25e fl. PlancalculationsShade Calculsection de la région A - ASSE B - Bnorth-Ouest élévationnorth-EST ElevationsUnées-Est, sans espace
Il serait plus clair si vous pouvez partager le code source car je ne sais pas d'en haut où le texte est stocké
Essayez le code suivant
source="""<div class="dojoxGridView" id="dojox_grid__View_1" role="presentation" style="width: 1900px; height: 721px; left: 1px; top: 0px;" widgetid="dojox_grid__View_1"> <input class="dojoxGridHiddenFocus" dojoattachpoint="hiddenFocusNode" role="presentation" type="checkbox"/> <input class="dojoxGridHiddenFocus" role="presentation" type="checkbox"/> <div class="dojoxGridScrollbox" dojoattachpoint="scrollboxNode" role="presentation" style="height: 721px;"> <div class="dojoxGridContent" dojoattachpoint="contentNode" hidefocus="hidefocus" role="presentation" style="height: 504px; width: 1900px;"> <div role="presentation" style="position: absolute; left: 0px; top: 0px;"> <div aria-selected="false" class="dojoxGridRow" role="row" style=""> <table border="0" cellpadding="0" cellspacing="0" class="dojoxGridRowTable" role="presentation" style="width: 1900px;"> <tbody> <tr> <td class="dojoxGridCell" idx="0" role="gridcell" style="display:none;width:100px;" tabindex="-1"> 78126 </td> <td class="dojoxGridCell" idx="1" role="gridcell" style="width:10%;" tabindex="-1"> Approved Plan </td> <td class="dojoxGridCell" idx="2" role="gridcell" style="width:10%;" tabindex="-1"> G-10 </td> <td class="dojoxGridCell" idx="3" role="gridcell" style="width:40%;" tabindex="-1"> ROOF PLAN </td> </tr> </tbody> </table> </div>""" from bs4 import BeautifulSoup soup = BeautifulSoup(source,"html.parser") for article in soup.find_all('div', class_='dojoxGridContent'): drawing_no = article.find('td', class_='dojoxGridCell', idx='3') if drawing_no: print(drawing_no.get_text())
Erreur: AttributeError: l'objet "non constitué" n'a aucun attribut 'get_text'
Possible si certains articles n'ont pas d'éléments de table avec une vérification TD correspondante mise à jour et qu'il n'imprime que si l'élément existe
Même erreur :( "Objet ResultSe n'a aucun attribut '% s'. Vous traitez probablement une liste d'éléments comme un seul élément. Avez-vous appelé Find_All () lorsque vous vouliez appeler Rechercher ()?"% Touche AttributeError: ResultSet objet n'a aucun attribut 'get_text'. Vous traitez probablement une liste d'éléments comme un seul élément. Avez-vous appelé Find_all () lorsque vous vouliez appeler Rechercher ()?
avez-vous remarqué l'article.fr changez que j'ai remplacé Find_All
Oh non, je n'ai pas fait, ça marche! donne: plan de toit mais comment puis-je obtenir tout élément cependant?
Tout élément signifie tout TD à l'intérieur de DojoxGridContent
Je l'ai eu, si Drawing_no: pour D dans Dessin_no: Imprimer (d.get_text ())
Vous pouvez utiliser l'attribut iDX code> et sélectionner par sa valeur
juste essayer avec dessin_no.gettext ()
Il donne une erreur: "L'objet RestaurantsSet n'a aucun attribut '% s'. Vous traitez probablement une liste d'éléments comme un seul élément. Avez-vous appelé Find_all () lorsque vous vouliez appeler la recherche ()?" % clé AttributeError: l'objet ResultSet n'a aucun attribut 'GetText'. Vous traitez probablement une liste d'articles comme un seul article. Avez-vous appelé Find_All () lorsque vous vouliez appeler Rechercher ()?
Il est dû à la Find_All juste ajouter une autre pour boucle après ou si un seul élément remplace Find_All par trouver
édité dessin_no = article.find ('TD', classe _ = 'dojoxgridcell', idx = '3'). Il donne: AttributeError: l'objet «non constitué» n'a aucun attribut 'GetText'