zoukankan      html  css  js  c++  java
  • py3+requests+json+xlwt,爬取拉勾招聘信息

    在拉勾搜索职位时,通过谷歌F12抓取请求信息

    发现请求是一个post请求,参数为:

    返回的是json数据

     有了上面的基础,我们就可以构造请求了

    然后对获取到的响应反序列化,这样就获取到了json格式的招聘信息,就可以进行各种操作了,比如取其中的某个信息

    最后循环写入excle

    具体实现如下: 

    import requests
    import json
    import xlwt
    
    items = [] # 招聘信息
    pn = 1
    # 抓取数据
    def get_content(pn):
        # 全国
        url = 'https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false'
        data = {
            'first':'true',
            'pn':pn,
            'kd':'python'
        }
        # url发送一个post请求,把data数据发送过去
        html = requests.post(url,data).text # 获取文本
        # print(type(html)) # <class 'str'>
        html = json.loads(html) 
        print(html)
    
        for i in range(15):
            item = []
            # 字典嵌套,招聘职位、公司、薪资、地区、福利、提供条件、工作类型
            item.append(html['content']['positionResult']['result'][i]['positionName'])
            item.append(html['content']['positionResult']['result'][i]['companyFullName'])
            item.append(html['content']['positionResult']['result'][i]['salary'])
            item.append(html['content']['positionResult']['result'][i]['city'])
            item.append(html['content']['positionResult']['result'][i]['positionAdvantage'])
            item.append(html['content']['positionResult']['result'][i]['companyLabelList'])
            item.append(html['content']['positionResult']['result'][i]['firstType'])
            items.append(item)
        return items
    
    # 创建excel表格
    def excel_write(items):
        newTable = 'test1.xls'  
        wb = xlwt.Workbook(encoding='utf-8') # 创建excel文件
        ws = wb.add_sheet('test1') # 创建sheet
        headData = ['招聘职位','公司','薪资','地区','福利','提供条件','工作类型']
        for hd in range(7):
            ws.write(0,hd,headData[hd],xlwt.easyxf('font:bold on')) 
        # 写数据
        index = 1 # 表示行
        for item in items:
            for i in range(7):
                # print(type(item[i]))
                if i == 5:
                    ws.write(index, i, ','.join(item[i])) 
                else:
                    ws.write(index, i, item[i])  
            index += 1
        wb.save(newTable)  
    
    
    if __name__ == '__main__':
        items = get_content(pn)
        print(items)
        excel_write(items)
    

      

  • 相关阅读:
    手写堆排序和归并排序
    海量数据处理
    HDU 1532 --&&-- POJ1273 dinic 算法
    POJ 3159 最短路 SPFA
    POJ 1459 网络流 EK算法
    8.14比赛j题 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87813#overview
    单链表---邻接表
    poj 1273 ---&&--- hdu 1532 最大流模板
    HDU 2603 二分匹配
    UVA 796 连通图求桥
  • 原文地址:https://www.cnblogs.com/uncleyong/p/6960044.html
Copyright © 2011-2022 走看看