我能够检索到
标记之前的文本,但不能检索到它之后的文本。
这是我试图从中收集评论的网站: 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ただただ涙が止まらない会見だった'}
最后两条评论都有一个
标签,在这两种情况下,评论的第二部分都被省略了。
我真的很感激任何帮助。
最佳答案
我运行了你的蜘蛛并意识到当你 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胸が締め付けられそうだ。']}
关于python-3.x - Scrapy - 抓取评论跳过 <br> 之后的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44964462/