**爬取某学校就业网站招聘信息**
用到的包
from urllib.request import urlopen
import requests
import json
一、获取不同页面的url
在页面点击F12,通过network中获取不同网页的url,观察区别
1st page:
Request URL: http://job.ustb.edu.cn/front/zp_query/zpxxQuery.jspa?paramMap.xxlx=2%2C3&page.curPage=1¶mMap.gzcs=¶mMap.dwhydm=¶mMap.dwxzdm=¶mMap.dwmc=
2nd page:
http://job.ustb.edu.cn/front/zp_query/zpxxQuery.jspa?paramMap.xxlx=2%2C3&page.curPage=2¶mMap.gzcs=¶mMap.dwhydm=¶mMap.dwxzdm=¶mMap.dwmc=
3nd page:
Request URL: http://job.ustb.edu.cn/front/zp_query/zpxxQuery.jspa?paramMap.xxlx=2%2C3&page.curPage=3¶mMap.gzcs=¶mMap.dwhydm=¶mMap.dwxzdm=¶mMap.dwmc=
发现每翻一页 “curPage" 后的数字都增加1。
二、通过循环获取页码
通过”+str(k)+“ 的方式把字符串和数字联系起来
提取前9页的信息
for k in range(1,10):
URL = "http://job.ustb.edu.cn/front/zp_query/zpxxQuery.jspa?paramMap.xxlx="+str(k)+"&page.curPage="+str(k)+""
print(URL)
三、 获取页面中想要的信息
URL = "http://job.ustb.edu.cn/front/zp_query/zpxxQuery.jspa?paramMap.xxlx=1&page.curPage=1"
html = requests.get(URL).text
html = json.loads(html)#把json格式转化成python对象
注:需要将页面的json格式转换成python对象,才能进一步提取信息,否则会出错
json.dumps()#把python对象转化成json格式对象
json.loads()#把json格式转化成python对象
html解析后,显示如下(有删减):`
{'msg': 'Y',
'totalRecords': 27870,
'pageCount': 1394,
'curPage': 1,
'data': [ {'click': 3,
'createTime': 1582892950000,
'dwmc': '中国邮政储蓄银行股份有限公司',
'dwszddm': '北京市',
'pp1Valid': 'N',
'pp2Valid': 'N',
'pp3Valid': 'N',
'pp4Valid': 'N',
'tid': '38093',
'title': '中国邮政储蓄银行 校招',
'updateTime': 1582893178000,
'xqzwList': [],
'zyCount': 0},
{'click': 51,
'createTime': 1582816968000,
'dwmc': '北京市安全生产科学技术研究院',
'dwszddm': '北京市通州区',
'pp1Valid': 'N',
'pp2Valid': 'N',
'pp3Valid': 'N',
'pp4Valid': 'N',
'tid': '38078',
'updateTime': 1582816968000,
'xqzwList': [{'hkyq': '1',
'id': 27973,
'qyzt': 'Y',
'sftj': 'N',
'shzt': 'Y',
'wyspyq': '1',
'xbyq': '1',
'xqzw': '监测预警岗',
'xsgbjlyq': '1',
'yt': '1',
'zwlb': '1',
'zyxxList': []},
{'hkyq': '1',
'id': 27972,
'qyzt': 'Y',
'sftj': 'N',
'shzt': 'Y',
'wyspyq': '1',
'xbyq': '1',
'xqzw': '科研岗',
'xsgbjlyq': '1',
'yt': '1',
'zwlb': '1',
'zyxxList': []}],
'zyCount': 0}],
'zyCount': 0}],
'showPageSize': 11,
'beginPos': 1}`
我们需要的信息是 公司名称(”dwmc“),地点(”dwszddm“),职位信息(”zyxxList“)
可以看到有些公司有职位信息,有些没有(通过if语句判断);职位信息也可能不止一个(通过在字典中建list解决)。
巧的是,这里不同公司的各种信息代码都一样,如果不一样,就要用到正则表达式。如公司名称可能是dwmc,dwmb,dwmd等等…
四、开始写代码啦
完整代码如下
lst = []
for k in range(1,10):
URL = "http://job.ustb.edu.cn/front/zp_query/zpxxQuery.jspa?paramMap.xxlx=1&page.curPage="+str(k)+""
html = requests.get(URL).text
html = json.loads(html)
for i in range(len(html["data"])):
page = {}
job = []
page["公司名称"] = (html["data"][i]["dwmc"])
page["地点"]= (html["data"][i]["dwszddm"])
if len(html["data"][i]["xqzwList"]) != 0:
for j in range(len(html["data"][i]["xqzwList"])):
job.append(html["data"][i]["xqzwList"][j]["xqzw"])
page["职位名称"] = job
lst.append(page)
爬虫+python 小白,写的罗里吧嗦勉强能爬出来,请大佬指正。