使用 requests 抓取拉勾网职位信息
2016-12-15 本文已影响245人
瀚苑小黄猫
本文介绍利用 Python 的第三方模块 requests 来抓取拉勾网上关于 Python 的职位,薪资,福利和要求。
安装 requests
安装命令如下:
pip install requests
返回状态
利用如下代码测试返回状态码:
import requests
r = requests.get('https://www.lagou.com')
r.status_code
如果返回的状态码为 200
,那么表示发送请求成功。
头部信息
r.headers['content-type']
输出的值:
'text/html;charset=UTF-8'
或者使用:
r.encoding
则输出:
'UTF-8'
查看请求内容
可以使用r.text
或者r.content
来查看请求页面内容源码
#coding:utf-8
import requests
r = requests.get(url = 'https://www.lagou.com')
print r.text
URL 里传递参数
#coding:utf-8
import requests
r = requests.get('https://www.lagou.com')
print r.url
输出如下:
https://www.lagou.com
接下来在 URL 里传递参数,以www.baidu.com
为例:
#coding:utf-8
import requests
r = requests.get('https://www.baidu.com', params={'wd':'python'})
print r.url
输出如下:
https://www.baidu.com?wd=python
实战
利用 Python 的第三方模块 requests 来抓取拉勾网上关于 Python 的职位,薪资,福利和要求。
直接上代码:
#coding:utf-8
import requests
import json
import sys
reload(sys)
# 输出结果是utf-8
sys.setdefaultencoding('utf-8')
# 定义一个空list
items = []
def get_content(pn): #多页
url = 'https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false'
data = {'first':'true',
'pn':pn,
'kd':'python'
}
# 发送post请求并获取网页内容
html = requests.post(url, data).text
# 转换为json,python的list格式
html = json.loads(html)
for i in range(15):
item = []
item.append(html['content']['positionResult']['result'][i]['salary'])
item.append(html['content']['positionResult']['result'][i]['workYear'])
item.append(html['content']['positionResult']['result'][i]['positionName'])
item.append(html['content']['positionResult']['result'][i]['companyFullName'])
item.append(html['content']['positionResult']['result'][i]['positionAdvantage'])
item.append(html['content']['positionResult']['result'][i]['city'])
items.append(item)
return items
def write():
# 声明一个变量,页数
ID = 1
while ID < 15:
get_content(ID) #多页
ID += 1
for i in items:
if i[5] == '上海':
print (u'薪资:%s 要求:%s 职位:%s 公司全称:%s 福利:%s\n' % (i[0], i[1], i[2], i[3], i[4]))
write()
以上代码直接筛选出了上海市的所有 Python 职位信息如下:
PythonJob.png