Scrapy - 刮取评论后跳过文本

时间:2017-07-07 07:00:41

标签: python-3.x scrapy

我可以在
标签之前检索文本,但不能检索文本之后的文本。

这是我试图从以下网址获取评论的网站: http://hamusoku.com/archives/9589071.html#comments

从一些评论开始,包括我认为意味着用户点击输入的标签。有没有办法将标签之前和之后的文本作为单个评论?

以下是源代码的示例

<li="comment-body"> ==$0
    "
    愛の言葉も、この瞬間は辛い。"
    <br>
    "
    胸が締め付けられそうだ。"

这是我的代码:

import scrapy


class HamusoSpider(scrapy.Spider):
    name = 'hamuso'
    start_urls = ['http://hamusoku.com/archives/9589071.html#comments/']

    def parse(self, response):
        for com in response.css('li.comment-body'):
        item = {
        'comment': com.css('li::text').extract_first()
        }
        yield item

这是我在shell中获得的输出:

{'comment': '\n\t\n\tかなしいなぁ'}
{'comment': '\n\t\n\t海老蔵…つらいな'}
{'comment': '\n\t\n\t海老蔵には頑張って欲しいな'}
{'comment': '\n\t\n\t御冥福をお祈りします'}
{'comment': '\n\t\n\t泣かすなや。'}
{'comment': '\n\t\n\t海老蔵これからしっかりせなアカンぞ'}
{'comment': '\n\t\n\t愛の言葉も、この瞬間は辛い。'}
{'comment': '\n\t\n\tただただ涙が止まらない会見だった'}

最后两个评论都有一个标签,在这两种情况下,评论的第二部分都被省略了。

我真的很感激任何帮助。

1 个答案:

答案 0 :(得分:0)

我已经运行了你的蜘蛛,并意识到当你extraxt_first()时,你只得到第一项或第一项评论,其余的是<br>标签不可缓存之后。

要解决此问题,请使用extract()这将返回comment-body

中所有评论的列表
import scrapy

class HamusoSpider(scrapy.Spider):
    name = 'hamuso'
    start_urls = ['http://hamusoku.com/archives/9589071.html#comments/']
    def parse(self, response):
        for com in response.css('li.comment-body'):
            item = {'comment': com.css('li::text').extract()}
            yield item

我输出的最后一条评论的输出是

{'comment': ['\n\t\n\tただただ涙が止まらない会見だった', '\n本当に短い人生だったけど豊かな人生だったのがわかる']}
{'comment': ['\n\t\n\t愛の言葉も、この瞬間は辛い。', '\n胸が締め付けられそうだ。']}