我可以在
标签之前检索文本,但不能检索文本之后的文本。
这是我试图从以下网址获取评论的网站: 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ただただ涙が止まらない会見だった'}
最后两个评论都有一个标签,在这两种情况下,评论的第二部分都被省略了。
我真的很感激任何帮助。
答案 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胸が締め付けられそうだ。']}