今年很缺钱,或者说一直缺,但是今年开始意识到了,决定用业余时间赚外快,最好能达到目前一半的收入。首先戒了手机,每天就多了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,微信公众号,爬虫数量较少,其他一些比较冷门的就不分析了
然后是开发的目的,全新产品是最多的,这意味着你最好有一套模板或者框架能够快速搭建,技术难题则是第二多的,一般来说周期较短,如果恰好能解决就能赚快钱,如果没有这个能力,那么就与你无缘。