J'ai parcouru beaucoup de htmls (avec un contenu similaire) à partir de nombreux sites de Scrapy, alors que la structure dom est différente.Est-il possible de trouver les nœuds avec la même structure dom
Par exemple, l'un des sites utilisent la structure suivante:
<div class="post">
<section class='content'>
Content1
</section>
<section class="panel">
</section>
</div>
<div class="post">
<section class='content'>
Conent2
</section>
<section class="panel">
</section>
</div>
Et je veux extraire les données Content
et Content2
.
Alors un autre site peut utiliser la structure comme ceci:
<article class="entry">
<section class='title'>
Content3
</section>
</article>
<article class="entry">
<section class='title'>
Conent4
</section>
</article>
Et je veux extraire les données Content3
et Content4
.
Alors que la solution la plus simple consiste à marquer les données xpath une par une pour tous les sites. Ce serait un travail fastidieux.
Je me demande si la structure peut être extraite automatiquement. En fait, je ai juste besoin d'être situé au nœud racine répétée (div.post
et article.entry
dans l'exemple ci-dessus), puis je peux extraire les données avec certaines règles.
Est-ce possible?
BTW, je ne suis pas exactement sûr du nom de ce genre d'algorithmes, donc l'étiquette de ce post peut-être mal, n'hésitez pas à le modifier si c'est vrai.
Êtes-vous à la recherche d'une solution qui couvrirait 2 sites spécifiques ou un nombre inconnu de sites? – Granitosaurus
Sur la base de ces deux exemples, il semble que votre contenu se trouve toujours dans un ''. Si cela est vrai pour tous les sites Web que vous êtes en train de gratter, vous pouvez utiliser 'response.xpath ('// section [@ class =" title "]/text()'). Extract()'. –
Casper
@Granitosaurus Oui, mais les sites ont le même type de contenu avec une structure dom différente. – hguser