Python爬蟲入門教程 37-100 雲沃客項目外包網數據爬蟲 scrapy


爬前叨叨

2019年開始了,今年計划寫一整年的博客呢~,第一篇博客寫一下 一個外包網站的爬蟲,萬一你從這個外包網站弄點外快呢,呵呵噠

![python3爬蟲入門教程](https://img-blog.csdnimg.cn/20190102101929924.gif#pic_center =220x200)

數據分析

官方網址為 https://www.clouderwork.com/

python3爬蟲入門教程

進入全部項目列表頁面,很容易分辨出來項目的分頁方式

get異步請求

Request URL:https://www.clouderwork.com/api/v2/jobs/search?ts=1546395904852&keyword=&budget_range=&work_status=&pagesize=20&pagenum=3&sort=1&scope=
Request Method:GET
Status Code:200 OK

參數如下

	ts:1546395904852  # 時間戳
	keyword:   # 搜索關鍵字,查找全部,使用空即可
	budget_range:   # 暫時無用
	work_status:
	pagesize:20   # 每頁數據量
	pagenum:3   # 頁碼
	sort:1   # 排序規則
	scope:

下面就是拼接請求了,確定一下 request 相關參數

Accept:application/json, text/javascript, */*; q=0.01
Accept-Encoding:gzip, deflate, br
Accept-Language:zh-CN,zh;q=0.9
Connection:keep-alive
Cookie:
Host:www.clouderwork.com
Referer:https://www.clouderwork.com/jobs?keyword=
User-Agent:Mozilla/5.0 你自己的UA QQBrowser/10.3.3006.400
X-Requested-With:XMLHttpRequest

爬蟲采用scrapy
這個網站沒有反爬措施,所以直接上就可以了

# -*- coding: utf-8 -*-
import scrapy
from scrapy import Request
import time
import json

class CloudeworkSpider(scrapy.Spider):
    name = 'cloudework'
    allowed_domains = ['www.clouderwork.com']
    start_url = 'https://www.clouderwork.com/api/v2/jobs/search?ts={times}&keyword=&budget_range=&work_status=&pagesize={pagesize}&pagenum={pagenum}&sort=1&scope='

    def start_requests(self):
        for page in range(1,353):
            yield Request(self.start_url.format(times=time.time(),pagesize=20,pagenum=page))

    def parse(self, response):
        json_data = json.loads(response.text)
        for item in  json_data["jobs"]:
            yield item

數據存儲到 mongodb中,合計爬取到 7000+ 數據

數據分析

從mongdo讀取數據

import pymongo
import pandas as pd
from pandas import Series,DataFrame
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標簽
plt.rcParams['axes.unicode_minus']=False #用來正常顯示負號
# 連接數據庫
client = pymongo.MongoClient("localhost",27017)
cloud = client["cloud"]
collection = cloud["cloudework"]

# 加載數據
data = DataFrame(list(collection.find()))

結果顯示為 [7032 rows x 35 columns]

查看數據基本情況

直接使用data.shape 可以查看一下數據的基本情況

查看一下工期的分布

periods = data.groupby(["period"]).size()

x = periods.index 
y = periods.values 
plt.figure()
plt.scatter(x,y, color="#03a9f4", alpha = 0.5) # 繪制圖表
plt.xlim((0, 360))
plt.ylim((0, 2000))
plt.xlabel("工期")
plt.ylabel("項目數")
plt.show()

可以看到數據散點集中在0~50天

python3爬蟲入門教程

過濾一下40天以內的數據

periods = data.groupby(["period"]).size().reset_index(name="count")

df = periods[periods["period"]<=40]

x = df["period"]
y = df["count"]

plt.figure()
plt.scatter(x,y,label='項目數折線',color="#ff44cc")
plt.title("工期對應項目數")
plt.xlim((0, 360))
plt.ylim((0, 500))
plt.show()

python3爬蟲入門教程

發現竟然有1天工期的任務,可以瞅瞅都是什么任務

periods = data.groupby(["period"]).size()
data[data["period"]==1][["name","period"]]

python3爬蟲入門教程

果然比較簡單唉~~不過也沒有多少錢,有個急活,1000¥

查看閱覽量Top10

views = data["views_count"]
top10 = views.sort_values(ascending=False)[:10]

top10 = data[data.views_count.isin(top10.values)][["name","views_count","period","summary"]]
top10

python3爬蟲入門教程

查閱一下開發模式

看一下什么類型的項目比較多???數據上反應,Web網站和APP最多了,所以這方面的技能的大神么,可以沖一波了
python3爬蟲入門教程

其實還有很多比較有意思的數據分析結果,有需要數據集的可以給我個評論 我發給你

新年第一篇博客結束liao~~

python3爬蟲入門教程


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM