您的位置:首页 > 编程语言 > Python开发

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

2016-04-22 23:58 537 查看

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

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

直接抓取能去到当前页面的所有信息,但是没有找到下一页的链接。通过岔开源代码,原来是动态加载的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 urllib2
import json
import sys
reload(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 urllib2
import json
import sys
reload(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']


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

结果如下:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: