Python3 爬虫拉勾网抓取数据保存在Excel中

操作环境:Python 3.6、Pycharm 2017.2.3

前言

本人渣渣一枚,为爬虫拉勾网获取数据,将获得的数据保存在Excel中,这中间的过程大概花费了我两天的时间(捂脸),期间参考了很多博客,自己也一直在探索,终于折腾出来了,现在一步步地把步骤写出来。

步骤一 – 分析拉勾网

1、首先打开拉勾网,然后借助Chrome浏览器的开发工具进行分析,即按F12,记得勾上Presever Log这个选项
F12
接着我们选择NetWork – XHR来查看网页请求,在之前看很多博主都说主要分析页面是那个pisotion开头的,但是我怎么找都找不到,后来偶尔发现你需要在搜索的时候选上工作地点才出来那个页面
2、我随便选了一个北京吧,然后按F5刷新一下页面就能看到所有的网络请求了,果不其然,那个position页面出来了,于是点进去分析
position
3、接着我们分析Previiew中的数据,发现在content>positionResult>result中的数据和我们在拉勾网页面看到的是一模一样的,没错,我们主要分析这里就可以了
这里写图片描述
4、那么在审查元素的时候,我们可以得到以下的信息
URL:https://www.lagou.com/jobs/positionAjax.json?px=new&city=%E5%8C%97%E4%BA%AC&needAddtionalResult=false&isSchoolJob=0,其中的city参数就是我们选中的工作地点啦

代码

代码分析我就不一步步说了,毕竟我是初学者,也不是很懂,哈哈,现在我附上我的完整代码,可以成功运行,抓取到前6页的数据

import requests#导入库
import xlsxwriter
import time
headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36',
'Referer': 'https://www.lagou.com/jobs/list_Python?px=default&gx=&isSchoolJob=1&city=%E5%B9%BF%E5%B7%9E',
'Cookie': 'user_trace_token=20171010203203-04dbd95d-adb7-11e7-946a-5254005c3644; LGUID=20171010203203-04dbddae-adb7-11e7-946a-5254005c3644; index_location_city=%E5%B9%BF%E5%B7%9E; JSESSIONID=ABAAABAABEEAAJA8BF3AD5C8CFD40070BD3A86E50B0F9E4; PRE_UTM=; PRE_HOST=; PRE_SITE=https%3A%2F%2Fwww.lagou.com%2F; PRE_LAND=https%3A%2F%2Fwww.lagou.com%2Fjobs%2Flist_Python%3FlabelWords%3D%26fromSearch%3Dtrue%26suginput%3D; TG-TRACK-CODE=index_navigation; SEARCH_ID=0cc609743acc4bf18789b584210f6ccb; _gid=GA1.2.271865682.1507638722; Hm_lvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1507638723; Hm_lpvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1507720548; _ga=GA1.2.577848458.1507638722; LGSID=20171011190218-a611d705-ae73-11e7-8a7a-525400f775ce; LGRID=20171011191547-882eafd3-ae75-11e7-8a92-525400f775ce'

}
def getJobList(page):

    formData = {
    'first': 'false',
    'pn': page,
    'kd': 'Python'
}
res = requests.post(
    # 请求的url
    url='https://www.lagou.com/jobs/positionAjax.json?city=%E5%B9%BF%E5%B7%9E&needAddtionalResult=false&isSchoolJob=0',
    # 添加headers信息
    headers=headers
)
result = res.json()
jobsInfo = result['content']['positionResult']['result']
return jobsInfo

workbook = xlsxwriter.Workbook(‘Python职位信息.xlsx’) # 创建一个excel表格
worksheet = workbook.add_worksheet()# 为创建的excel表格添加一个工作表
def writeExcel(row=0, positionId=’职位ID’, positionName=’职位名称’, salary=’薪资’, createTime=’发布时间’, workYear=’工作经验’,education=’学历’, firstType=’职位大类’, city=’城市’, companyFullName=’公司名’):# 将数据写入工作表中

if row == 0:
    worksheet.write(row, 0, positionId)
    worksheet.write(row, 1, positionName)
    worksheet.write(row, 2, salary)
    worksheet.write(row, 3, createTime)
    worksheet.write(row, 4, workYear)
    worksheet.write(row, 5, education)
    worksheet.write(row, 6, firstType)
    worksheet.write(row, 7, city)
    worksheet.write(row, 8, companyFullName)
else:
    worksheet.write(row, 0, job['positionId'])
    worksheet.write(row, 1, job['positionName'])
    worksheet.write(row, 2, job['salary'])
    worksheet.write(row, 3, job['createTime'])
    worksheet.write(row, 4, job['workYear'])
    worksheet.write(row, 5, job['education'])
    worksheet.write(row, 6, job['firstType'])
    worksheet.write(row, 7, job['city'])
    worksheet.write(row, 8, job['companyFullName'])

writeExcel(row=0) # 在第一行中写入列名
row = 1 # 从第二行开始写入数据
for page in range(1, 7): # 这里爬取前五页招聘信息做一个示范

for job in getJobList(page=page):  # 爬取一页中的每一条招聘信息

    # 将爬取到的信息写入表格中
    writeExcel(row = row,positionId=job['positionId'], positionName=job['positionName'], salary=job['salary'], createTime=job['createTime'], workYear=job['workYear'],
                   education=job['education'], firstType=job['firstType'], city=job['city'], companyFullName=job['companyFullName'])
    row += 1
print('第 %d 页已经爬取完成' % page)
# 做适当的延时
time.sleep(0.5)

workbook.close() # 关闭表格文件
print(‘爬取的结果在Python职位信息.xlsx中’)

爬取的结果如下:
这里写图片描述

其中,我做的远远不够,代码写的有点乱,只能慢慢一步步来,下次写一遍分析岗位的文章

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值