老师,麻烦您看一下爬取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>')) 但是这样一来虽然把多行内容都爬取到了,但是文本中又多出来空格和标签的信息,麻烦老师给个好一点的解决
办法。
老师的多行处理是错的,
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
这样会有省略号怎么办