用python爬取码市的数据简单分析

今年很缺钱,或者说一直缺,但是今年开始意识到了,决定用业余时间赚外快,最好能达到目前一半的收入。首先戒了手机,每天就多了4个小时的富余时间,开始查看各大主流的外包项目网站。以前很佛系,没自己做过外包的项目,以我的性格不能蒙头就做,得先收集信息,确定哪些比较符合我的技术,哪些技能需求的人多,哪些项目简单来钱快等等。浏览并手动复制了几个项目就想到俺们程序员怎么能用这么low的方式收集信息,不如学一下python爬虫,既能收集信息,爬虫本身也有一定的市场需求,一举两得!!

于是先简单地做了一个爬虫爬取码市的数据,并且简单的过滤一下,输出到excel。后面我的打算是爬取所有网站的外包项目,保存到数据库,并做几个简单的报表和数据分析,还有关键词分析等等。以报表的结果来决定未来接活的方向和学习的方向。同时可以快速查询符合目前要求的外包项目。磨刀不误砍柴工。

import requests #导入爬虫库
import time #用于请求延时
import xlwt  # 进行excel操作


def main():
    url='https://codemart.com/api/project?page=1'
    headers={
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36',
        'accept': 'application/json'
    }
    print("开始爬取数据")
    res=requests.get(url,headers=headers).json()
    pager = res['pager']#分页信息,包含当前页数,总共页码数,数据条数
    pageSize = pager['totalPage'];#总页码数
    rewards = res['rewards']
    print("总页数:"+str(pageSize))
    print("总条数:"+str(pager['totalRow']))
    list = []#list存放所有项目
    list2 = []#list2存放周期30天内的开发工程师项目
    transData(list, rewards, lambda data: list2.append(data) if data["duration"]<=30 and data["roles"] == '开发工程师' else 0)
    time.sleep(1)  #每请求一次延时一秒钟 减少对服务器的负担
    for i in range(2, pageSize + 1):
        url = 'https://codemart.com/api/project?page='+str(i)
        print("爬取进度"+str(i)+":"+str(pageSize))
        res=requests.get(url,headers=headers).json()
        rewards = res['rewards']
        transData(list, rewards, lambda data: list2.append(data) if data["duration"]<=30 and data["roles"] == '开发工程师' else 0)
        time.sleep(1)  #每请求一次延时一秒钟 减少对服务器的负担
    saveExcel(list,"码市所有外包项目.xls")
    saveExcel(list2,"码市短期开发项目.xls")
    
def transData(list, rewards, func):
    for o in rewards:
        data = {}
        data["name"] = o["name"]#项目标题
        data["description"] = o["description"]#项目描述
        data["price"] = o["price"]#价格
        data["roles"] = o["roles"]#角色 设计师,开发工程师,团队等
        data["status"] = o["statusText"]#项目的状态
        data["type"] = o["typeText"]#项目类型 小程序 微信公众号 Web网站等
        data["duration"] = o["duration"]#开发周期
        data["unit"] = "天"
        text = '';
        labels = []
        for l in o.get("labels",[]):
            labels.append(l['label'])
        data['labels'] = ",".join(labels)
        func(data)
        list.append(data)
def saveExcel(datalist,savepath):
    print("保存到excel"+savepath+"中.......")
    book = xlwt.Workbook(encoding="utf-8",style_compression=0) #创建workbook对象
    sheet = book.add_sheet('sheet', cell_overwrite_ok=True) #创建工作表
    col = ("标题","描述","价格","角色","任务状态","类型","工期", "单位","标签")
    for i in range(0,len(col)):
        sheet.write(0,i,col[i])  #列名
    for i in range(0,len(datalist)):
        # print("第%d条" %(i+1))       #输出语句,用来测试
        data = datalist[i]
        j = 0
        for v in data.values():
            sheet.write(i+1,j,v)  #数据
            j =1+j
    book.save(savepath) #保存

if __name__ == "__main__":  # 当程序执行时
    # 调用函数
     main()
    # init_db("movietest.db")
     print("爬取完毕!")

代码执行情况

生成的短期项目excel

用excel做了下简单的分析

可以看到Web网站的开发任务还是最多的,小程序和APP开发一样多,加起来超过网页,html5,微信公众号,爬虫数量较少,其他一些比较冷门的就不分析了

然后是开发的目的,全新产品是最多的,这意味着你最好有一套模板或者框架能够快速搭建,技术难题则是第二多的,一般来说周期较短,如果恰好能解决就能赚快钱,如果没有这个能力,那么就与你无缘。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值