2017-07-27 1 views
0

Cela fait un moment que je suis là et je jette l'éponge pour obtenir de l'aide. J'essaie de scrapper this page spécifiquement j'essaye d'obtenir l'accès à chaque rangée de table qui a l'information en tant que vert surligné dans l'image suivante. Je n'ai pas besoin des en-têtes de table, juste des rangées.Problème de création du sélecteur CSS correct

enter image description here

Avec Scrapy Je suis en mesure d'obtenir à chaque zone de section (où il est dit "Campus principal") avec le sélecteur suivant

response.css('.datadisplaytable .datadisplaytable') 

J'utilise .datadisplaytable deux fois parce que les tables J'essaie de sélectionner sont à l'intérieur d'une table avec cette classe. Après cela, ce qui me semble logique de se rendre à la ligne de la table, je suis après serait d'utiliser le sélecteur suivant

response.css('.datadisplaytable .datadisplaytable tbody:nth-child(2)') 

Cependant, je reçois rien avec ce sélecteur. Qu'est-ce que je fais mal?

Répondre

1

Votre sélecteur est un peu éteint. Vous n'essayez pas d'obtenir le deuxième tag <tbody/>.

.datadisplaytable .datadisplaytable tbody tr:nth-child(n+2) 

Vous obtiendrez toutes les lignes et ignorerez l'en-tête de chaque table.

+0

J'ai essayé cela dans la coquille scrapy et n'ai rien obtenu en retour. – ehThind

+0

'tr: nth-child (n + 2)' sélectionne tous les enfants tr qui sont le 2e élément ou plus tard parmi leurs frères et sœurs. –

+0

@ehThind Je ne suis pas familier avec Scrapy, je l'ai seulement vérifié en allant à ma console sur cette page et en vérifiant le résultat de $ ('. Datadisplaytable .datadisplaytable tbody tr: nth-child (n + 2)') ' . –