我正在尝试使用scrapy刮取亚马逊上的评论文本。问题是,当评论包含多个输入时,span元素中的文本由< br>标签。所以,当我想要抓第一篇评论时,我会使用这行代码:
response.css('span.a-size-base.review-text::text').extract_first()
这并没有给我所有的评论文本,只提供了< span>元素和第一个< br>元件。
我知道当我更换" extract_first()"通过" extract()",我将获得所有文本。但是,这也给了我其他评论的文本。
基本上,extract()方法返回一个数组,其元素由< br>标签。我需要将它与&分开。 span>标签
有没有办法在open<之间刮掉所有文本? span>元素和结束< / span>元件?
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():
&#34;我喜欢这个产品,原因解释如下&#34;
输出我将使用extract()(请注意它包含三个元素):
&#34;我喜欢这个产品,原因解释如下&#34;, &#34; 1。看起来不错#34; &#34; 2。我喜欢它&#34;
输出我想得到(只有一个元素,评论本身):
&#34;我喜欢这个产品,原因解释如下1.它看起来不错2.我喜欢它&#34;
答案 0 :(得分:0)
使用extract()并加入列表。
>>> text=["I like this product, the reasons why are explained below", "1. It looks nice", "2. I love it"]
>>> " ".join(text)
'I like this product, the reasons why are explained below 1. It looks nice 2. I love it'