import re #正则表达式提取规则
from bs4 import BeautifulSoup  # 网页解析,获取数据
import urllib.request, urllib.error  #指定URL,获取网页数据
import xlwt  # 进行Excel操作def main():baseurl = "http://job.gdut.edu.cn/unijob/index.php/web/Index/job-list?p="#基本路径finalList=[]#用来放最终数据for i in range(1,2359):  # 调用获取页面信息的函数,2359次,一次10条,一共爬取到23590条数据url = baseurl + str(i)#根据链接的规律,找到每一页的链接datalist =getData(url)#解析网页,得到一个网页的内容,并提取相关数据finalList=finalList+datalist#把提取到的两万多条数据放进一个大表格#print(finalList)#看看格式是不是符合要求的savepath = './'#文件路径saveData(finalList, savepath)#将数据存储到Excel表格中dbpath = "jobDB.db" #数据库路径init_db(dbpath)#初始化数据库saveData2DB(dbpath, finalList)#将数据保存在数据库里,更加安全,以防弄丢#利用正则表达式查找目标数据
findTitle = re.compile(r'<div class="col-xs-4 job-name">(.*)</div>')#职位名称
findTime=re.compile(r'<div class="col-xs-2 job-time">(.*)</div>')#发布时间
findCompany=re.compile(r'<div class="col-xs-4 col-xs-offset-1 job-company" style="width:170px;">(.*)</div>')#公司名称
#salary格式不同,要另外设置re
findSalary=re.compile(r'<divclass="col-xs-4job-salary">(.*)</div>')#月薪
findEdu=re.compile(r'<div class="col-xs-3 job-edu">(.*)</div>')#学历
findType=re.compile(r'<div class="col-xs-5 job-industry">(.*)</div>')#公司类型
findDetail=re.compile(r'<div class="qrcode-container" data-url="(.*?)"></div>')#详情链接
findBenefit=re.compile(r'<div class="third-line">(.*)</div>')#工作福利
findAddress=re.compile(r'<div class="col-xs-12 job-industry">(.*)</div>')#公司地址#解析网页,利用正则表达式提取数据
def getData(url):datalist = []html = askURL(url)  # 保存获取到的网页源码print("正在解析网页!请耐心等待~")soup = BeautifulSoup(html, "html.parser")#由于页面中月薪一项格式和其它的都不一样,所以要单独处理al = soup.find_all('div', class_="col-xs-6")bl = soup.find_all('div', class_="col-xs-4 job-salary")salList=[]for b in bl:b=str(b)b=re.sub('[\t\s]',"",b)salary=re.findall(findSalary, b)salList.append(salary)i = 0# 搜索目标<a>标签for a in al:a = str(a)data=[]#职位名称titles = re.findall(findTitle, a)if titles != []:data.append(titles[0])#发布时间time = re.findall(findTime, a)if time != []:data.append(time[0])#公司名称company = re.findall(findCompany, a)if company != []:data.append(company[0])#月薪if i<len(salList):if salList[i]!=[]:data.append(salList[i][0])else:data.append(' ')i = i + 1#学历要求edu = re.findall(findEdu, a)if edu != []:data.append(edu[0])#公司类别type = re.findall(findType, a)if type!= []:data.append(type[0])#公司地址address=re.findall(findAddress, a)if address != []:data.append(address[0])#公司福利benefit = re.findall(findBenefit, a)if benefit != []:data.append(benefit[0])#详情链接detail=re.findall(findDetail,a)if detail!=[]:data.append(detail[0])#把每一条信息放进去if data!=[]:datalist.append(data)print("正在将数据存进去数组!请耐心等待~")return datalist#print(datalist)# 得到指定一个URL的网页内容
def askURL(url):head = {  # 模拟浏览器头部信息,向豆瓣服务器发送消息(伪装)"User-Agent":"XXXXXXXXXXXXXXXXXXXXX","Cookie":"xxxxxxxxxxxxxxxxxxxxxxxxxx"}# 用户代理,表示告诉广工校园网站服务器,我们是什么类型的机器、浏览器(本质上是高数浏览器,我们可以接收什么水平的文件内容)request = urllib.request.Request(url, headers=head)html = ""  # 网页先用''存一下try:response = urllib.request.urlopen(request)html = response.read().decode("utf-8")  # 解码# print(html)except urllib.error.URLError as e:if hasattr(e, "code"):print(e.code)if hasattr(e, "reason"):print(e.code)return html#将数据存到文件中
def saveData(datalist, savepath):print("save......")book = xlwt.Workbook(encoding="utf-8", style_compression=0)  # 创建workbook对象sheet = book.add_sheet("广东工业大学职位招聘情况", cell_overwrite_ok=(True))  # 创建工作表,每个单元格可以覆盖内容col = ('职位名称', '发布时间', '公司名称', '月薪', '学历要求', '公司类型', '公司地址','福利', '详情链接' )for i in range(0, 9):sheet.write(0, i, col[i])  # 列名for i in range(0, len(datalist)):print("第%d条" % i)data = datalist[i]for j in range(0, 9):sheet.write(i + 1, j, data[j])book.save('广东工业大学职位招聘情况.xls')  # 保存数据表import sqlite3
import xlrd
import xlwt#将数据存储到数据库中
def saveData2DB(datalist, dbpath):init_db(dbpath)#初始化数据库conn = sqlite3.connect(dbpath)#连接数据库cur = conn.cursor()#打开游标for data in datalist:  # 行for index in range(len(data)):  # 列data[index] = '"' + data[index] + '"'  #取出元素并加上“”号sql='''insert into jobDB(name,time,company,salary,edu,industry,address,benefit,link)values(%s)'''%",".join(data)#print(sql)cur.execute(sql)#游标执行conn.commit()#提交cur.close()#关闭游标conn.close()#关闭连接# 初始化数据库
def init_db(dbpath):# 创建数据表sql = '''create table jobs(id integer primary key autoincrement,name text,time text,company text,salary text,edu text,industry text,address text,benefit text,link text)'''conn = sqlite3.connect(dbpath)cursor = conn.cursor()#获取游标cursor.execute(sql)#执行sql语句conn.commit()#提交数据库操作conn.close()#关闭数据库连接#调用主函数
if __name__ == "__main__":main()print('爬取完毕!')

Python爬虫校园招聘信息网相关推荐

  1. 利用Python爬虫获取招聘网站职位信息

    当你学会使用Python爬虫之后就会发现想要得到某些数据再也不用自己费力的去寻找,今天小千就给大家介绍一个很实用的爬虫案例,获取Boss直聘上面的招聘信息,同学们一起来学习一下了. Boss直聘爬虫案 ...

  2. python爬虫某招聘数据进行可视化

    1.数据的获(pa)取 目录 1.数据的(pa)取 你不会以为这就结束了?才走了一半的路,坚持点!继续 2.数据清洗进行可视化 3.成品展示 俩天没见,大家的爬虫能力如何了?不知道大家的能力如何,反正 ...

  3. Python爬虫某招聘网站的岗位信息

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:阿尔法游戏 PS:如有需要Python学习资料的小伙伴可以加点击下方链 ...

  4. Python爬虫 boos招聘网站

    本文章的所有代码和相关文章, 仅用于经验技术交流分享,禁止将相关技术应用到不正当途径,滥用技术产生的风险与本人无关. 本文章是自己学习的一些记录. 爬取Boss网站的招聘信息 1.导入相关的包 #co ...

  5. python爬虫找工作要掌握什么_python爬虫实战:判断招聘信息的存在

    在找工作的时候,我们会选择上网查询招聘的信息,或者是通过一些招聘会进行现场面试.但由于信息更新不及时,有一些岗位会出现下架的情况,如果我们不注意的话,可能就扑了空.在时间上耽误了不说,面试的信息也会受 ...

  6. python爬虫找工作怎么找_python爬虫判断招聘信息是否存在的实例代码

    在找工作的时候,我们会选择上网查询招聘的信息,或者是通过一些招聘会进行现场面试.但由于信息更新不及时,有一些岗位会出现下架的情况,如果我们不注意的话,可能就扑了空.在时间上耽误了不说,面试的信息也会受 ...

  7. 基于python爬虫数据处理_基于Python爬虫的校园数据获取

    苏艺航 徐海蛟 何佳蕾 杨振宇 王佳鹏 摘要:随着移动时代的到来,只适配了电脑网页.性能羸弱的校园教务系统,已经不能满足学生们的移动查询需求.为此,设计了一种基于网络爬虫的高实用性查询系統.它首先通过 ...

  8. python爬虫招聘-Python爬虫抓取智联招聘(基础版)

    原标题:Python爬虫抓取智联招聘(基础版) 作者:C与Python实战 「若你有原创文章想与大家分享,欢迎投稿.」 对于每个上班族来说,总要经历几次换工作,如何在网上挑到心仪的工作?如何提前为心仪 ...

  9. python爬虫多url_Python爬虫实战入门六:提高爬虫效率—并发爬取智联招聘

    之前文章中所介绍的爬虫都是对单个URL进行解析和爬取,url数量少不费时,但是如果我们需要爬取的网页url有成千上万或者更多,那怎么办? 使用for循环对所有的url进行遍历访问? 嗯,想法很好,但是 ...

最新文章

  1. C# 调用Excel 出现服务器出现意外情况. (异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT)
  2. 现代控制理论输出y_现代控制理论试题及答案
  3. python 常见内置函数setattr、getattr、delattr、setitem、getitem、delitem
  4. css中的em 简单教程 -- 转
  5. EXCEL里常用的几个正则表达式
  6. 进程间通信 IPC、LPC、RPC
  7. 在写事件函数的时候function(e)当中的e是什么意思
  8. paip. dsl 编程语言优点以及 常见的dsl
  9. cheap fifa coins Do restrict Alexander fantastic?
  10. PyCharm搜索技巧快捷键
  11. (原创)微信公众号开发的简单模板及配置流程简介
  12. python 听歌识曲_听歌识曲--用python实现一个音乐检索器
  13. Office系列办公软件中的一款-Microsoft Excel提供下载
  14. z-blog建立博客网站SEO优化细节教程
  15. win7计算机无法连接投影仪,win7系统无法连接投影仪的解决方法
  16. CMOS反相器设计与仿真
  17. JAVA垃圾分类管理系统-含论文基于SSM【数据库设计、毕业设计、源码、开题报告】
  18. 【信号处理】数字基带信号波形仿真含Matlab源码
  19. 电子词典(tcp多进程模型)
  20. DHTMLXGantt 中使用工作时间日历的示例

热门文章

  1. 邻苯二甲酸酐修饰卵清蛋白(HP-OVA),雷帕霉素偶联卵清蛋白 rapamycin-OVA
  2. 分段控制器view隐藏
  3. 数学建模——Matlab常用函数
  4. gflags-命令行参数处理
  5. 蓝桥杯嵌入式——题目总结及文章汇总
  6. 苹果推送表情(php字符转换)
  7. 热补丁Nuwa配置说明
  8. 有趣的自定义View — 玫瑰·三阶贝塞尔曲线
  9. Mysql学习笔记(基础)
  10. JAVA快速开发项目汇总