python爬取网站招聘信息


《python程序设计课程设计报告》
题目
一、 设计方案(思路)
爬取网页为:https://www.jobui.com/jobs/ 爬取对象为:python开发工程师,职位地点:厦门。将爬取的结果存放在excel文件中,存储信息包括:职位名称、经验、学历、薪资
什么叫爬虫呢?
就是使用编程语言所编写的程序,在互联网上模拟器获取(大量)数据
浏览器工作原理 : 发请求,得响应
爬虫的工作原理:发请求,得响应,数据的解析,存储
直接使用requests库,在不设置任何header的情况下,网站直接不返回数据。同一个ip连续访问多次,直接封掉ip。
反爬的一种手段---(伪装成浏览器)
headers= {}
爬取数据的步骤
安装python和python库requests、BeautifulSoup、openpyxl
1. 找到要爬取的目标网站,发送请求 requests
2. 分析有效的url
3. 提取数据有用的数据
4. 数据的存储
爬虫:采集数据,从网页上面爬取到想要的内容
怎么可以获取数据?
静态网页:打开网页,获取源码,从源码中间提取想要的内容
动态网页:找到请求,请求方式
二、 程序流程图

三、 代码
import requests #向服务器发送请求的模块(相当于浏览)
from bs4 import BeautifulSoup #用于解析和提取数据
import openpyxl #读写excel文件
import time
lst=[]
def send_requests(id,page):
url='https://www.jobui.com/jobs?cityKw=%E5%8E%A6%E9%97%A8&jobKw=python%E5%BC%80%E5%8F%91%E5%B7%A5%E7%A8%8B'.format(id,page) #相当于浏览器的地址栏
#用于反爬的一种手段―(伪装成浏览器)
headers= {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'}
resp=requests.get(url,headers=headers) #相当于在浏览器的地址栏中输入网址之后回车的过程
return resp.text
def parse_html(html): #html代表是从服务器端响应回来的数据(内容)
bs=BeautifulSoup(html,'html.parser') #得到BeautifulSoup的对象
job_lst=bs.find_all('div',class_='c-job-list') #得到包含职位的div,--》15
for item in job_lst: #分别遍历每一个职位数据每个item就是一个c-job-lst
name=item.find('h3').text #职位名称
div_tag=item.find('div',class_='job-desc')
span_tag=div_tag.find_all('span')
url=item.find('a',class_='job-name')['href'] #提取class样式为job-name的a标签,获取属性为href的值
lst.append([name,span_tag[0].text,span_tag[1].text,span_tag[2].text])
#存储
def save(lst):
wk=openpyxl.Workbook() #打开工作蒲
sheet=wk.active #活动页(凹下去的sheet)
#遍历列表
for item in lst:
sheet.append(item)
#保存文件
wk.save('招聘信息.xlsx')
#启动爬虫程序
def start(id,pages):
for page in range(1,pages+1) :
resp_data=send_requests(id,page) #发送请求
parse_html(resp_data)
time.sleep(2)
save(lst)
if __name__ == '__main__':
pages=3
start(id,pages)
四、 结果分析

五、 总结
大家找工作都是通过各种招聘app,信息全部罗列出来,可是招聘信息有一些是错综复杂的。而且不能把全部的信息全部罗列出来,这样也让人很苦恼,所以今天我们就通过爬虫技术,为大家解决这个问题。首先我们的爬取目标是获取招聘信息,并批量把职位名称、经验、工资 、学历等详细资料做成excel。这里我们爬取网页为:https://www.jobui.com/jobs/为例。在获取数据之前简单的对网站进行了分析,和对该网站上的反爬等操作。

