Scrapy -正在获取不带外部标记的HTML

ngynwnxp  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(159)

我正在抓取一个页面,使用Scrapy。我想要TD的HTML内容,带有“text”类:

<tr valign="top">
  <td class="text" width="100%">
    <b>A bunch of HTML</b>

    <ul type="disc">
      <li>Some random text</li>
    </ul>
  </td>
</tr>

这是我的Scrapy系列:

for body in response.css('td.text'):
  yield {'body': body.extract()}

这是可行的-除了它包括周围的td:

[
  {"body": "<td class="text" width="100%"> <b>A bunch of HTML</b> <ul type="disc"> <li>Some random text</li> </ul> </td>"}
]

这就是我想要的:

[
  {"body": "<b>A bunch of HTML</b> <ul type="disc"> <li>Some random text</li> </ul>"}
]

哈普?:)

ojsjcaue

ojsjcaue1#

请尝试此选择器:

response.css('td.text *')

*将选择所有内部标记。

jchrr9hc

jchrr9hc2#

好吧,我找到了一个解决办法,虽然我仍然认为一定有更聪明的办法:

bodies = ''
    for body in response.xpath("//td[@class='text']/child::node()"):
        bodies += body.extract()
    yield {'body': bodies}

相关问题