本篇主要介绍,爬取html数据后,将html的正文内容存储为json或csv格式。
json格式存储
选定要爬取的网站后,我们利用之前学过的内容,如:Beautiful Soup、xpath等方式解析,来获取我们希望得到的内容。
获取数据
首先使用urllib访问页面https://www.lagou.com/zhaopin/Python/?labelWords=label 获取html内容,代码如下:
from
通过上面的代码获取了html内容,接下来就要分析html来提取我们需要的内容了。 打开拉钩页面,使用ctrl+ F12打开火狐浏览器工具,可以看到我们想要获取的内容,职位、工作地点、薪资、发布的公司等信息都在一个div中,如下图:
下一步我们就使用之前介绍过的Beautiful Soup获取这个div内容,同时也可以获取我们需要的内容,通过工具我们可以看到我们需要的内容所在的标签,见下图:
# 生成soup实例
都是通过Beautiful Soup的方法获取的内容,如果不懂,大家可以翻翻之前的工具篇。输出的内容如下:
Python
好,数据有了,就差存储了。
数据存储(json)
python通过json模块对数据进行编码和解码。编码过程是,通过json模块的dumps和dump对数据进行python对象到json对象的转换,解码过程是,通过json模块的loads和load对数据进行json对象到python对象的转换。 编码 dump将python 对象序列化为一个JSON格式的流,存储到文件,转换时类型变化如下:
json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
dumps将obj序列化为JSON格式的str json.dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
解码 load对Python对象进行反序列化,可以从文件读取 json.load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
oads对Python对象进行反序列化 json.loads(s, *, encoding=None, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
了解了json操作,现在就可以把之前获取的拉钩数据存储为json了,见下面代码:
with
好了,存储为json格式就说到这里了。完整代码如下:
import
csv格式存储
所谓的CSV(Comma Separated Values)格式是电子表格和数据库最常用的导入和导出格式。 python的csv模块实现类以csv格式读取和写入表格数据。它允许程序员说,“以Excel的格式编写这些数据”,或者“从Excel生成的文件中读取数据”,而不知道Excel使用的CSV格式的详细信息。程序员还可以描述其他应用程序所理解的CSV格式,或者定义他们自己的专用CSV格式。
写数据到csv文件中
# -*- coding: utf-8 -*-
生成的csv文件内容如下:
id
写字典到csv文件
import
获取的csv文件内容如下:
first_name
读取csv文件
import
结果如下:
[
以字典形式读入csv文件
import
输出结果:
[
所以爬取拉钩网数据,如果存储到csv文件的代码如下:
import
获取的数据如下:
突然发现今天的例子还是存为csv格式合适,找工作新技能,你get了吗~!