我如何 select 嵌套 div 中的所有段落元素?

How can I select all paragraph elements inside nested divs?

我有一条评论想抓取 (https://www.consumeraffairs.com/insurance/bluecross_fl.html)。我发现的问题是有些评论没有存储在同一结构中。在页面中,您必须按“阅读完整评论”,这会访问结构的另一部分,其中包含评论的其余部分。

简单评论的结构是这样的:

<div>
   <p>
     review
   </p>
</div>

其他评论结构是这样的:

<div>
   <p>
     review
   </p>
   <div>
       <p>
         remaining review
      </p>
   </div>
</div>

我已经尝试过类似的方法,但我仍然只收到评论的第一部分,而不是其余部分。

response.css('itemprop="reviews"] > div:nth-child(3) > p *::text').extract()

如果您使用通用 child selector,您应该能够定位 div 中的所有 p。尽管结构。

div > p {
  background-color: #ffd110;
}
<div>
  <p>
    review
  </p>
  <div>
    <p>
      remaining review
    </p>
  </div>
</div>

<div>
  <p>
    review
  </p>
</div>

编辑 ~ 根据评论中的要求,您可以集中使用 p:nth-child(2) 选择哪个 p 见下文。

div > p:nth-child(2) {
  background-color: #ffd110;
}
<div>
  <p>
    review
  </p>
  <div>
    <p>
      remaining review
    </p>
    <p>review 2</p>
  </div>
</div>