为了账号安全,请及时绑定邮箱和手机立即绑定

为何多行文本内容最终只爬取到最后一行内容

老师,麻烦您看一下爬取introduce信息时,xpath写为

“.//div[@class='info']//div[@class='bd']/p[1]/text()”

然后赋值时

content_s = "".join(i_content.split())

您这边在pycharm终端中输出第一页时确实有多行内容分行提取到了,但是最后top250全部爬取时introduce只有最后一行的内容。

我完全按您的代码运行,爬取第一页时introduce就只有最后一行内容,top250全部爬取时也只有最后一行的内容。

于是我把xpath改成“.//div[@class='info']//div[@class='bd']/p[1]”,去掉了text()

然后content_s = "".join(i_content.split('<br>'))

但是这样一来虽然把多行内容都爬取到了,但是文本中又多出来空格和标签的信息,麻烦老师给个好一点的解决

办法。

正在回答

2 回答

老师的多行处理是错的,

content = i_item.xpath(".//div[@class='info']/div[@class='bd']/p[1]//text()").extract()

这个解析出来是一个两个元素的列表,两个元素分别是<br>的前后两段,因此下面这段代码:

for i_content in content:
    content_s = "".join(i_content.split())
    douban_item['introduce'] = content_s

代码的含义是,分别取出<br>的前后两段,然后去掉空格换行符等,然后存进数据库的introduce字段。这样的话第二段的数据就会覆盖第一段先存进去的数据,因此你看到了“多行文本内容最终只爬取到最后一行内容”这个结果。

可以改成这样:

content_s = ""
for i_content in content:
    content_s = content_s + "".join(i_content.split())
douban_item['introduce'] = content_s


2 回复 有任何疑惑可以回复我~

这样会有省略号怎么办

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为何多行文本内容最终只爬取到最后一行内容

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信