Python爬取码市项目

Python爬取码市项目

上周用java爬取了码市上的项目,这周用python试了一下,代码如下。

import requests
import brotli
from requests.exceptions import RequestException
import time
import csv
import json


headers = {'Accept': 'application/json'}


def get_one_page(url):
    try:
        response = requests.get(url, headers=headers)
        if response.status_code == 200:
            data = response.json()
            return data
        return None
    except RequestException:
        print("抓取失败")


def parse_one_page(d):
    try:
        rewards = d['rewards']
        for reward in rewards:
            yield{
                'id': reward['id'],
                'name': reward['name'],
                'price': reward['price'],
                'statusText': reward['statusText'],
                'description': reward['description'],
                'duration': reward['duration'],
                'roles': reward['roles']
            }
        if data['id', 'name', 'price', 'statusText', 'description', 'duration', 'roles'] is None:
            return None
    except Exception:
        return None


def main():
    for i in range(10):
        url = 'https://codemart.com/api/project?page={}'.format(i+1)
        d = get_one_page(url)
        print('第{}页抓取完毕'.format(i+1))

        # 将输出字典依次写入csv文件中
        with open('Jobs.csv', 'a', newline='', encoding='utf-8') as f:
            fieldnames = ['id', 'name', 'price', 'statusText', 'description', 'duration', 'roles']
            writer = csv.DictWriter(f, fieldnames=fieldnames)
            writer.writeheader()
            for item in parse_one_page(d):
                writer.writerow(item)


if __name__ == '__main__':
    main()

跑完之后出CSV文件,代码量上少了很多,时间上与java花的差不多(可能是数据量不是特别多的原因,所以差别不是特别明显( ̄▽ ̄)")。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值