python爬虫开发–实战百度招聘(json包的处理)

来源:互联网 发布:淘宝同款原理 编辑:程序博客网 时间:2024/06/03 17:52

今天开始做了一个抓取有用信息的工具。

我选择了一个百度找工作的入口。
直接抓取能去到当前页面的所有信息,但是没有找到下一页的链接。通过岔开源代码,原来是动态加载的js代码。
F12开发者工具轻松的找到get提交的数据:
html = urllib2.urlopen(r’http://zhaopin.baidu.com/api/async?query=python&salary=&welfare=&education=&sort_key=&sort_type=1&city=%E5%8C%97%E4%BA%AC&district=&experience=&employertype=&jobfirstclass=&jobsecondclass=&jobthirdclass=&date=&detailmode=close&rn=30&pn=90‘)
其中很明显参数和页数以及搜索的类型有关系,这样就能构造下次页面抓取的链接。
点击这个链接之后发现返回的是json代码(而且是乱码),不要紧,先抓下来再说。

#-*- coding:utf-8 -*-import urllib2import jsonimport sysreload(sys)sys.setdefaultencoding('utf-8')html = urllib2.urlopen(r'http://zhaopin.baidu.com/api/async?query=python&salary=&welfare=&education=&sort_key=&sort_type=1&city=%E5%8C%97%E4%BA%AC&district=&experience=&employertype=&jobfirstclass=&jobsecondclass=&jobthirdclass=&date=&detailmode=close&rn=30&pn=90')hjson = json.loads(html.read())

其中json.loads 这里就把json格式的包变成了dict类型的数据了
,接下来就能像操作字典一样操作他了。
补充:

d1 = json.dumps(data1,sort_keys=True)

这个函数是吧字典转换成json包的
接下来就是一层一层的剥开json报了,平行的[]这种需要先取出元素再次网下拨。
具体代码如下:

for i in range(30):print i#print hjson['data']['data']['OtherInfo']['job_fenlei'][i]['disp']#print hjson['data']['data']['OtherInfo']['job_fenlei'][i]['req']#print hjson['data']['data']['OtherInfo']['job_fenlei'][i]['url']# print hjson['data']['data']['OtherInfo']['job_fenlei'][0]#print hjson['data']['data']['disp_data'][i]print hjson['data']['data']['disp_data'][i]['StdStg']print hjson['data']['data']['disp_data'][i]['StdStl']print hjson['data']['data']['disp_data'][i]['_update_time']print hjson['data']['data']['disp_data'][i]['city']print hjson['data']['data']['disp_data'][i]['companyaddress']print hjson['data']['data']['disp_data'][i]['companydescription']print hjson['data']['data']['disp_data'][i]['description']print hjson['data']['data']['disp_data'][i]['description_jd']

哈哈哈,这样就能抓到当前页的所有代码了,红红火火哈哈哈哈哈哈哈哈哈

结果如下
今天开始做了一个抓取有用信息的工具。

我选择了一个百度找工作的入口。

直接抓取能去到当前页面的所有信息,但是没有找到下一页的链接。通过岔开源代码,原来是动态加载的js代码。

F12开发者工具轻松的找到get提交的数据:
html = urllib2.urlopen(r’http://zhaopin.baidu.com/api/async?query=python&salary=&welfare=&education=&sort_key=&sort_type=1&city=%E5%8C%97%E4%BA%AC&district=&experience=&employertype=&jobfirstclass=&jobsecondclass=&jobthirdclass=&date=&detailmode=close&rn=30&pn=90‘)

其中很明显参数和页数以及搜索的类型有关系,这样就能构造下次页面抓取的链接。

点击这个链接之后发现返回的是json代码(而且是乱码),不要紧,先抓下来再说。

#-*- coding:utf-8 -*-import urllib2import jsonimport sysreload(sys)sys.setdefaultencoding('utf-8')html = urllib2.urlopen(r'http://zhaopin.baidu.com/api/async?query=python&salary=&welfare=&education=&sort_key=&sort_type=1&city=%E5%8C%97%E4%BA%AC&district=&experience=&employertype=&jobfirstclass=&jobsecondclass=&jobthirdclass=&date=&detailmode=close&rn=30&pn=90')hjson = json.loads(html.read())

其中json.loads 这里就把json格式的包变成了dict类型的数据了

,接下来就能像操作字典一样操作他了。

补充:

d1 = json.dumps(data1,sort_keys=True)

这个函数是吧字典转换成json包的
接下来就是一层一层的剥开json报了,平行的[]这种需要先取出元素再次网下拨。

具体代码如下:

for i in range(30):print i#print hjson['data']['data']['OtherInfo']['job_fenlei'][i]['disp']#print hjson['data']['data']['OtherInfo']['job_fenlei'][i]['req']#print hjson['data']['data']['OtherInfo']['job_fenlei'][i]['url']# print hjson['data']['data']['OtherInfo']['job_fenlei'][0]#print hjson['data']['data']['disp_data'][i]print hjson['data']['data']['disp_data'][i]['StdStg']print hjson['data']['data']['disp_data'][i]['StdStl']print hjson['data']['data']['disp_data'][i]['_update_time']print hjson['data']['data']['disp_data'][i]['city']print hjson['data']['data']['disp_data'][i]['companyaddress']print hjson['data']['data']['disp_data'][i]['companydescription']print hjson['data']['data']['disp_data'][i]['description']print hjson['data']['data']['disp_data'][i]['description_jd']

哈哈哈,这样就能抓到当前页的所有代码了,红红火火哈哈哈哈哈哈哈哈哈
结果如下:这里写图片描述

0 0
原创粉丝点击