博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
爬虫代码编写中会遇到的字符处理的坑
阅读量:6901 次
发布时间:2019-06-27

本文共 1605 字,大约阅读时间需要 5 分钟。

常见报错信息

报错信息:

Operand should contain 1 column(s)

意思是只能插入单行,不能插入多行数据


报错信息:

data too long

意思是数据库字段长度不够


报错信息:

[Failure instance: Traceback: 
: 'job_name'

意思是键值错误,情况一般是CSS选择器在页面获取不到对应的值(比如页面有变化导致不是常规页面)、spider的取值与item的键对应不上、还有后面跟colum的一般是数据库字段与item键对不上


常见数据处理方法

1.文章内容、简介等多行多段的文本数据 [思路来源:]

这种数据通常的做法是全部取下来,保留文章里面的html标签(如

\n \r等),在item里面把值转成str类型,存入数据库即可。这里有个新的发现,在爬取广西人才网的时候,它的文本是这样的:

1.负责员工饭堂菜品的烹饪

2.员工饭堂物料的购买

3.员工食堂卫生

对应的html结构如下:

1.负责员工饭堂菜品的烹饪

2.员工饭堂物料的购买
3.员工食堂卫生

问题就在这里! 这样的值看似一个完整的文本,但是传递到item后由于

标签的存在,就会变成一条一条的数据:

1.负责员工饭堂菜品的烹饪
2.员工饭堂物料的购买
3.员工食堂卫生

而不是我想象中的一个完整文本:

1.负责员工饭堂菜品的烹饪,2.员工饭堂物料的购买,3.员工食堂卫生

这样的数据存入数据库,就会报错

Operand should contain 1 column(s)

应对这种问题,解决的办法就是在数据传递到item之前,在spider取值的时候就对
进行处理,可以用replace把它替换掉。

在广西人才网这个爬虫中,我的做法是用.join()方法来清除

,.join()的介绍如下:

  • 描述:Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
  • 语法:str.join(sequence)
  • 参数:sequence -- 要连接的元素序列
  • 返回值:返回通过指定字符连接序列中元素后生成的新字符串。

它的代码示例:

str = "-";seq = ("a", "b", "c"); # 字符串序列print str.join( seq );

得到输出是 a-b-c

所以广西人才网爬虫这里,我在spider文件新建一个方法,用于清除br:

def clear_br(self, value):        """        文本中包含有
标签的话,传值到itme中就不会是整个文本,而是一条一条的数据 保存到数据库的时候会报错:Operand should contain 1 column(s) 那就要将文本里面的
换成其他,由于传递过来的value是一个列表list,所以用for循环把元素replace也可以 这里用.join()方法把列表里的所有元素用逗号拼接成字符串 """ value = ','.join(value) return value

然后itemloader赋值的时候这样写:

p_centent = response.css('#examineSensitiveWordsContent::text').extract()        iloaders.add_value("job_content", self.clear_br(p_centent))  # 工作内容及要求

意思是在取到文本后调用clear_br函数将list列表里面的元素用逗号拼接,最后返回一个字符串。这样就能达到正常入库的需求了。

转载地址:http://cfvdl.baihongyu.com/

你可能感兴趣的文章
为什么未来是全栈工程师的世界?
查看>>
php示例代码之 使用PHP的MySQL标准函数
查看>>
.net中的泛型
查看>>
VS2010编译Boost 1.56
查看>>
mysql5.x(<7) sql文件导入到5.7
查看>>
常用正则表达式
查看>>
TortoiseSvn安装的时候,将svn的命令行工具单独隔离出来
查看>>
GitHub 入门教程
查看>>
《转载》脚本实现从客户端服务端HTTP请求快速分析
查看>>
C# 轻松实现对窗体(Form)换肤[转]
查看>>
subversion adobe-flashplugin
查看>>
开启服务和停止服务
查看>>
谎言与逻辑的故事三则
查看>>
【iCore双核心组合是开发板例程】【uCGUI 例程及代码包下载】
查看>>
Dell笔记本刷回低版本bios的方法
查看>>
《程序员面试宝典》之错误纰漏(持续更新。。。)
查看>>
【OpenCV-Python】Python Extension Packages for Windows
查看>>
UVA 10163 Storage Keepers(dp + 背包)
查看>>
mysql has gone away
查看>>
linux驱动开发---导出内核符号
查看>>