【发布时间】:2018-04-04 01:33:26
【问题描述】:
我正在尝试使用 scrapy 抓取亚马逊上的评论文本。问题是当评论包含多个输入时,span 元素中的文本由
标签分隔。所以,当我想抓取第一个评论时,我会使用这行代码:
response.css('span.a-size-base.review-text::text').extract_first()
这并没有给我评论的所有文本,而只是 元素和第一个
元素之间的文本。
我知道当我用“extract()”替换“extract_first()”时,我会得到所有的文本。但是,这也给了我其他评论的文本。
基本上,extract() 方法返回一个数组,其中的元素由
标签分隔。我需要用 标签分隔它。
有没有办法刮掉打开的元素和关闭的元素之间的所有文本?
HTML 代码示例:
< span data-hook="review-body" class="a-size-base review-text">
"I like this product, the reasons why are explained below"
< br >
< br >
"1. It looks nice"
< br >
"2. I love it"
< /span >
网站上的样子:
我喜欢这个产品,原因在下面解释
- 看起来不错
- 我喜欢它
我将使用 extract_first() 得到的输出:
“我喜欢这个产品,原因在下面解释”
我将使用 extract() 得到输出(注意它由三个元素组成):
"我喜欢这个产品,原因在下面解释", "1. 看起来不错", “2. 我喜欢它”
我想得到的输出(只有一个元素,评论本身):
“我喜欢这个产品,原因解释如下 1. 很好看 2. 我喜欢”
【问题讨论】:
标签: python html web-scraping tags amazon