【爬虫基础】爬取学校官网分页招聘信息

**爬取某学校就业网站招聘信息**

用到的包

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&paramMap.gzcs=&paramMap.dwhydm=&paramMap.dwxzdm=&paramMap.dwmc=

2nd page:
http://job.ustb.edu.cn/front/zp_query/zpxxQuery.jspa?paramMap.xxlx=2%2C3&page.curPage=2&paramMap.gzcs=&paramMap.dwhydm=&paramMap.dwxzdm=&paramMap.dwmc=

3nd page:
Request URL: http://job.ustb.edu.cn/front/zp_query/zpxxQuery.jspa?paramMap.xxlx=2%2C3&page.curPage=3&paramMap.gzcs=&paramMap.dwhydm=&paramMap.dwxzdm=&paramMap.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 小白,写的罗里吧嗦勉强能爬出来,请大佬指正。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值