J'essaie d'analyser certains contenus de la table ressemblant à ci-dessous:

<table class="dataTbl col-4">
                        <tr>
                            <th scope="row">Rent</th>
                            <td>5.5</td>
                            <th scope="row">Management</th>
                            <td>3.3</td>
                        </tr>
                        <tr>
                            <th scope="row">Deposit</th>
                            <td>No</td>
                            <th scope="row">Other</th>
                            <td>No</td>
                        </tr>
                        <tr>
                            <th scope="row">Other2</th>
                            <td>No</td>
                            <th scope="row">Insurance</th>
                            <td>Yes</td>
                        </tr>
                                            </table>

Mon objectif est de trouver une ligne spécifique (par exemple, Rent) et s'il y a une correspondance, d'extraire le contenu dans la prochaine balise <td> (par exemple, 5.5).

Mais comment puis-je le faire en Python?

J'utilise Python3 / Scrapy 1.3.0.

Merci

1
user3368526 16 janv. 2017 à 10:09

2 réponses

Meilleure réponse
In [9]: Selector(text=html).xpath('//th[text()="Rent"]/following-sibling::td[1]').extract()
Out[9]: ['<td>5.5</td>']
  1. Utilisez text()="Rent" pour identifier la balise th
  2. Utilisez following-sibling:: obtenir son frère et utilisez [1] pour commencer
1
宏杰李 16 janv. 2017 à 07:27

Utilisation de l'expression régulière d'un python.

r'\>text\<.+\n +\<td\>(\d+\.\d+)'

Dans votre cas, modifiez le texte par Rent. En outre, this est une page Web utile pour déboguer les expressions régulières.

1
Franco Gil 25 janv. 2019 à 16:38