爬虫搜集python我的Python自学之路

使用 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
上一篇 下一篇

猜你喜欢

热点阅读