创新实训-python3 爬虫 爬取就业帮助信息(一)

创新实训-python3 爬虫 爬取就业帮助信息(一)

注:相关信息仅用于学习交流
一、需求
为了搭建一个关于内推的网站,需要就业帮助信息,类似宣讲会、简历指导、备战策略等。因此需要爬取相关信息存入数据库中,并定时更新
二、数据库设计
在小组成员的讨论下,设计了如下表进行相关信息的存储
job_info表

属性名称 数据类型 是否为主键 能否为空
info_ID bigint 不能
title varchar 不能
describe text
links varchar 不能
date date 不能

其中info_ID 为主键,设置为自动增长,title为标题,describe为详细介绍,links为原网站链接,date为发布日期
三、目标网站分析及关键代码实现
1.首页的爬取
(1)需要爬取的字段
爬取的网页url为https://www.job.sdu.edu.cn/xwgg/tzgg/jyzd.htm
如下所示:
在这里插入图片描述
第一个帮助信息的url为https://www.job.sdu.edu.cn/info/1019/29055.htm,第二个帮助信息的url为https://www.job.sdu.edu.cn/info/1019/29056.htm ,因此为了在之后的工作中能够构建详情页的链接,需要把编号也爬取下来。
首页的url为https://www.job.sdu.edu.cn/xwgg/tzgg/jyzd.htm,第二页的url为https://www.job.sdu.edu.cn/xwgg/tzgg/jyzd/24.htm,尾页的url为https://www.job.sdu.edu.cn/xwgg/tzgg/jyzd/1.htm,因此为了循环爬取,需要获得总页数

总之,要在该网页中需要获得标题、发布日期、每一项对应的编号与总页数。
(2)关键代码及分析:
通过右键查看网页源代码发现总页数在以下代码中:
在这里插入图片描述 总页数仅需要在爬取第一页时获取,并把它存入为job_list的第一项,在后续的工作中进行获取与删除。正则匹配后进行分割,最终获得总页数:25

 if(isfirstPage==1):
      total_num=re.findall('<TD nowrap align="left" width="1%" id="fanye190595">(.*?)</td>',html,re.S)
      print(total_num)
      total_num=str(total_num[0])
      total_num=total_num.split('&nbsp')
      total_num=total_num[2]
      total_num=total_num.split('/')[-1]#总页数
      print(total_num)
      job_list.append(total_num)#第一个项

标题、发布日期以及对应的编号都在’li’标签下 ,运用正则表达式就可获得相关信息在这里插入图片描述

因为源代码中li标签下还有其他内容,所以用num进行过滤,具体的数值是通过测试得出的。正则匹配之后再将其中的无关字符进行取代。将每一个信息的日期、编号与名称放入job_list1中,然后将job_list1放入job_list中,这样job_list中信息形式为[总页数,[日期,编号,标题],[日期,标号,标题],[日期,标号,标题],……]

    for link in soup.find_all('li'):#li标签
        if (num > 46 and num < 68):  # 跳过页首与页尾的无关信息

            list=link.contents
            datetime=str(list[0])
            datetime = re.findall('<span>(.*?)</span>', datetime, re.S)
            datetime=str(datetime[0])
            datetime
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值