欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

JSON的使用方法

科技綠洲 ? 來(lái)源:Python實(shí)用寶典 ? 作者:Python實(shí)用寶典 ? 2023-10-31 16:42 ? 次閱讀

JSON是一個(gè)標(biāo)記符序列。這套標(biāo)記符包括: 構(gòu)造字符、字符串、數(shù)字和三個(gè)字面值 。

構(gòu)造字符

JSON包括六個(gè)構(gòu)造字符,分別是:左方括號(hào)、右方括號(hào)、左大括號(hào)、右大括號(hào)、冒號(hào)與逗號(hào)。

JSON值

JSON值可以是對(duì)象、數(shù)組、數(shù)字、字符串或者三個(gè)字面值(false、true、null),并且字面值必須是小寫英文字母。

對(duì)象

對(duì)象是由花括號(hào)括起來(lái),逗號(hào)分割的成員構(gòu)成,成員是字符串鍵和上面所說(shuō)的JSON值構(gòu)成,例如:

{"name":"jack","age":18,"address":{"country"}}

數(shù)組

數(shù)組是由方括號(hào)括起來(lái)的一組數(shù)值構(gòu)成,例如:

[1,2,32,3,6,5,5]

字符串與數(shù)字想必就不用我過(guò)多敘述吧。

下面我就舉例一些合法的JSON格式的數(shù)據(jù):

{"a":1,"b":[1.2.3]}
[1,2,"3",{"a":4}]
3.14
"json_data"

為什么要使用JSON

JSON是一種輕量級(jí)的數(shù)據(jù)交互格式,它使得人們很容易的進(jìn)行閱讀和編寫。同時(shí)也方便機(jī)器進(jìn)行解析和生成。適用于進(jìn)行數(shù)據(jù)交互的場(chǎng)景,比如網(wǎng)站前臺(tái)與后臺(tái)之間的數(shù)據(jù)交互。

JSON的使用方法

json.loads()

把JSON格式字符串解碼轉(zhuǎn)成Python對(duì)象,從JSON到Python類型轉(zhuǎn)換表如下:

JSONPython
objectdict
arraylist
stringstr
number(int)int
number(real)float
trueTrue
falseFalse
nullNone
  • 將數(shù)組轉(zhuǎn)成列表對(duì)象
import json


strList = "[1,2,3,3,4]"
print(json.loads(strList))
print(type(json.loads(strList)))

試著運(yùn)行上面的代碼,你會(huì)發(fā)現(xiàn)已經(jīng)成功的將strList轉(zhuǎn)換為列表對(duì)象。

  • 將對(duì)象轉(zhuǎn)換成字典
import json


strDict = '{"city":"上海","name":"jack","age":18}'
print(json.loads(strDict))
print(type(json.loads(strDict)))

試著運(yùn)行上面的代碼,你會(huì)發(fā)現(xiàn)已經(jīng)成功的將object轉(zhuǎn)換為dict類型的數(shù)據(jù)。

json.dumps()

其實(shí)這個(gè)方法也很好理解,就是將Python類型的對(duì)象轉(zhuǎn)換為json字符串。從Python類型向JSON類型轉(zhuǎn)換的對(duì)照表如下:

pythonJSON
dictobject
list, tuplearray
strstring
int, floatnumber
Truetrue
Falsefalse
Nonenull
  • 將Python列表對(duì)象轉(zhuǎn)換為JSON字符串
import json


list_str = [1,2,3,6,5]
print(json.dumps(list_str))
print(type(json.dumps(list_str)))

試著運(yùn)行上面的代碼,你會(huì)發(fā)現(xiàn)成功的將列表類型轉(zhuǎn)換成了字符串類型。

  • 將Python元組對(duì)象轉(zhuǎn)換為JSON字符串
import json


tuple_str = (1,2,3,6,5)
print(json.dumps(tuple_str))
print(type(json.dumps(tuple_str)))

試著運(yùn)行上面的代碼,你會(huì)發(fā)現(xiàn)成功的將元組類型的數(shù)據(jù)轉(zhuǎn)換成了字符串。

  • 將Python字典對(duì)象轉(zhuǎn)換為JSON字符串
import json 


dict_str = {"name": "小明", "age":18, "city": "中國(guó)深圳"}
print(json.dumps(dict_str))
print(type(json.dumps(dict_str)))

輸出結(jié)果:

{"name": "u5c0fu660e", "age": 18, "city": "u4e2du56fdu6df1u5733"}
< class 'str' >

看到上面的輸出結(jié)果也許你會(huì)有點(diǎn)疑惑,其實(shí)不需要疑惑,這是ASCII編碼方式造成的,因?yàn)?*json.dumps()**做序列化操作時(shí)默認(rèn)使用的就是ASCII編碼,因此我們可以這樣寫:

import json


dict_str = {"name": "小明", "age":18, "city": "中國(guó)深圳"}
print(json.dumps(dict_str, ensure_ascii=False))
print(type(json.dumps(dict_str)))

輸出結(jié)果:

{"name": "小明", "age": 18, "city": "中國(guó)深圳"}
< class 'str' >

因?yàn)閑nsure_ascii的默認(rèn)值是True,因此我們可以添加參數(shù)ensure_ascii將它的默認(rèn)值改成False,這樣編碼方式就會(huì)更改為utf-8了。

json.load()

該方法的主要作用是將文件中JSON形式的字符串轉(zhuǎn)換為Python類型。

具體代碼示例如下:

import json

str_list = json.load(open('position.json', encoding='utf-8'))
print(str_dict)
print(type(str_dict))

運(yùn)行上面的代碼,你會(huì)發(fā)現(xiàn)成功的將字符串類型的JSON數(shù)據(jù)轉(zhuǎn)換為了dict類型。

代碼中的文件position.json我也會(huì)分享給大家。

  • json.dump()

將Python內(nèi)置類型序列化為JSON對(duì)象后寫入文件。具體代碼示例如下所示:

import json

list_str = [{'city':'深圳'}, {'name': '小明'},{'age':18}]
dict_str = {'city':'深圳','name':'小明','age':18}

json.dump(list_str, open('listStr.json', 'w'), ensure_ascii=False)
json.dump(list_str, open('dictStr.json', 'w'), ensure_ascii=False)

jsonpath

XML的優(yōu)點(diǎn)是提供了大量的工具來(lái)分析、轉(zhuǎn)換和有選擇地從XML文檔中提取數(shù)據(jù)。Xpath是這些功能強(qiáng)大的工具之一。

對(duì)于JSON數(shù)據(jù)來(lái)說(shuō),也出現(xiàn)了jsonpath這樣的工具來(lái)解決這些問(wèn)題:

  • 數(shù)據(jù)可以通過(guò)交互方式從客戶端上的JSON結(jié)構(gòu)提取,不需要特殊的腳本。
  • 客戶端請(qǐng)求的JSON數(shù)據(jù)可以減少到服務(wù)器的上的相關(guān)部分,從而大幅度減少服務(wù)器響應(yīng)的帶寬使用。

jsonpath表達(dá)式始終引用JSON結(jié)構(gòu)的方式與Xpath表達(dá)式與XML文檔使用的方式相同。

jsonpath的安裝方法

pip install jsonpath

jsonpath與Xpath

下面表格是jsonpath語(yǔ)法與Xpath的完整概述和比較。

Xpathjsonpath概述
/$根節(jié)點(diǎn)
.@當(dāng)前節(jié)點(diǎn)
/.or[]取子節(jié)點(diǎn)
**匹配所有節(jié)點(diǎn)
[][]迭代器標(biāo)識(shí)(如數(shù)組下標(biāo),根據(jù)內(nèi)容選值)
//...不管在任何位置,選取符合條件的節(jié)點(diǎn)
n/a[,]支持迭代器中多選
n/a?()支持過(guò)濾操作
n/a()支持表達(dá)式計(jì)算

下面我們就通過(guò)幾個(gè)示例來(lái)學(xué)習(xí)jsonxpath的使用方法。

我們先來(lái)看下面這段json數(shù)據(jù)

{ "store": {
    "book": [
      { "category": "reference",
        "author": "Nigel Rees",
        "title": "Sayings of the Century",
        "price": 8.95
      },
      { "category": "fiction",
        "author": "Evelyn Waugh",
        "title": "Sword of Honour",
        "price": 12.99
      },
      { "category": "fiction",
        "author": "Herman Melville",
        "title": "Moby Dick",
        "isbn": "0-553-21311-3",
        "price": 8.99
      },
      { "category": "fiction",
        "author": "J. R. R. Tolkien",
        "title": "The Lord of the Rings",
        "isbn": "0-395-19395-8",
        "price": 22.99
      }
    ],
    "bicycle": {
      "color": "red",
      "price": 19.95
    }
  }
}

獲取符合條件的節(jié)點(diǎn)

假如我需要獲取到作者的名稱該怎么樣寫呢?

如果通過(guò)Python的字典方法來(lái)獲取是非常麻煩的,所以在這里我們可以選擇使用jsonpath.。

具體代碼示例如下所示:

import jsonpath


author = jsonpath.jsonpath(data_json, '$.store.book[*].author')
print(author)

運(yùn)行上面的代碼你會(huì)發(fā)現(xiàn),成功的獲取到了所有的作者名稱,并保存在列表中。

或者還可以這樣寫:

import jsonpath

author = jsonpath.jsonpath(data_json, '$..author')
print(author)

使用指定索引

還是使用上面的json數(shù)據(jù),假如我現(xiàn)在需要獲取第三本書的價(jià)格。

third_book_price = jsonpath.jsonpath(data_json, '$.store.book[2].price')
print(third_book_price)

運(yùn)行上面的代碼,你會(huì)發(fā)現(xiàn)成功的獲取到了第三本書的價(jià)格。

使用過(guò)濾器

isbn_book = jsonpath.jsonpath(data_json, '$..book[?(@.isbn)]')
print(isbn_book)
print(type(isbn_book))

通過(guò)運(yùn)行上面的代碼,你會(huì)發(fā)現(xiàn),成功的將含有isbn編號(hào)的書籍過(guò)濾出來(lái)了。

同樣的道理,根據(jù)上面的例子,我們也可以將價(jià)格小于10元的書過(guò)濾出來(lái)。

book = jsonpath.jsonpath(data_json, '$..book[?(@.price< 10)]')
print(book)
print(type(book))

通過(guò)運(yùn)行上面的代碼,你會(huì)發(fā)現(xiàn)這里已經(jīng)成功的將價(jià)格小于10元的書提取出來(lái)了。

jsonpath其實(shí)是非常適合用來(lái)獲取json格式的數(shù)據(jù)的一款工具,最重要的是這款工具輕量簡(jiǎn)單容使用。關(guān)于jsonpath的介紹到這里就結(jié)束了,下面我們就進(jìn)入實(shí)戰(zhàn)演練吧!

項(xiàng)目實(shí)戰(zhàn)

前言

每年的6月份都是高校學(xué)生的畢業(yè)季,作為計(jì)算機(jī)專業(yè)的你來(lái)說(shuō),如果剛剛畢業(yè)就可以進(jìn)入大廠,想必是一個(gè)非常不錯(cuò)的選擇。因此,今天我?guī)?lái)的項(xiàng)目就是爬取騰訊招聘的網(wǎng)站,獲取 職位名稱、職位類別、工作地點(diǎn)、工作國(guó)家、職位的更新時(shí)間、職位描述

爬取內(nèi)容一共有329頁(yè),在前329頁(yè)的職位都是在這個(gè)月發(fā)布的,還是比較新,對(duì)大家來(lái)說(shuō)更有參考的價(jià)值。

網(wǎng)頁(yè)鏈接:https://careers.tencent.com/search.html

準(zhǔn)備

工欲善其事,必現(xiàn)利其器 。首先我們要準(zhǔn)備好幾個(gè)庫(kù):pandas、requests、jsonpath

如果沒有安裝,請(qǐng)參考下面的安裝過(guò)程:

pip install requests
pip install pandas
pip install jsonpath

需求分析與功能實(shí)現(xiàn)

獲取所有的職位信息

對(duì)網(wǎng)頁(yè)進(jìn)行分析的時(shí)候,我發(fā)現(xiàn)想從網(wǎng)頁(yè)上直接獲取信息是是做不到的,該網(wǎng)頁(yè)的響應(yīng)信息如下所示:

< !DOCTYPE html >< html >< head >< meta charset=utf-8 >< meta http-equiv=X-UA-Compatible content="IE=edge" >< meta name=viewport content="initial-scale=1,maximum-scale=1,user-scalable=no" >< meta name=keywords content="" >< meta name=description content="" >< meta name=apple-mobile-web-app-capable content=no >< meta name=format-detection content="telephone=no" >< title >搜索 | 騰訊招聘< /title >< link rel=stylesheet href=https://cdn.multilingualres.hr.tencent.com/tencentcareer/static/css/main.css >< link rel=stylesheet href=https://cdn.multilingualres.hr.tencent.com/tencentcareer/static/css/jquery-ui.min.css >< /head >< body >< div id=app >< /div >< script type=text/javascript src=https://cdn.multilingualres.hr.tencent.com/careersmlr/HeadFoot_zh-cn.js >< /script >< script type=text/javascript src=https://cdn.multilingualres.hr.tencent.com/careersmlr/HostMsg_zh-cn.js >< /script >< script type=text/javascript src=https://cdn.multilingualres.hr.tencent.com/careersmlr/Search_zh-cn.js >< /script >< script type=text/javascript src=https://cdn.multilingualres.hr.tencent.com/tencentcareer/static/js/vendor/config.js >< /script >< script type=text/javascript src=https://cdn.multilingualres.hr.tencent.com/tencentcareer/static/js/vendor/jquery.min.js >< /script >< script type=text/javascript src=https://cdn.multilingualres.hr.tencent.com/tencentcareer/static/js/vendor/jquery.ellipsis.js >< /script >< script type=text/javascript src=https://cdn.multilingualres.hr.tencent.com/tencentcareer/static/js/vendor/report.js >< /script >< script type=text/javascript src=https://cdn.multilingualres.hr.tencent.com/tencentcareer/static/js/vendor/qrcode.min.js >< /script >< script type=text/javascript src=https://cdn.multilingualres.hr.tencent.com/tencentcareer/static/js/manifest.build.js >< /script >< script type=text/javascript src=https://cdn.multilingualres.hr.tencent.com/tencentcareer/static/js/vendor.build.js >< /script >< script type=text/javascript src=https://cdn.multilingualres.hr.tencent.com/tencentcareer/static/js/p_zh-cn_search.build.js >< /script >< /body >< script type=text/javascript src=https://cdn.multilingualres.hr.tencent.com/tencentcareer/static/js/vendor/common.js >< /script >< /html >

因此我判斷,這個(gè)是動(dòng)態(tài)Ajax加載的數(shù)據(jù),因此就要去網(wǎng)頁(yè)控制器上查找職位數(shù)據(jù)是否存在。

經(jīng)過(guò)一番查找,果然發(fā)現(xiàn)是動(dòng)態(tài)加載的數(shù)據(jù),信息如下所示:

圖片

格式化之后的數(shù)據(jù)如下所示:

{
    "Code":200,
    "Data":{
        "Count":8500,
        "Posts":[
            {
                "Id":0,
                "PostId":"1346716678288842752",
                "RecruitPostId":71330,
                "RecruitPostName":"41071-騰訊會(huì)議項(xiàng)目經(jīng)理(西安)(CSIG全資子公司)",
                "CountryName":"中國(guó)",
                "LocationName":"西安",
                "BGName":"CSIG",
                "ProductName":"騰訊云",
                "CategoryName":"產(chǎn)品",
                "Responsibility":"1、負(fù)責(zé)研發(fā)項(xiàng)目及研發(fā)效能的計(jì)劃制定、進(jìn)度驅(qū)動(dòng)和跟蹤、風(fēng)險(xiǎn)識(shí)別以及應(yīng)對(duì),確保項(xiàng)目按計(jì)劃完成;
2、負(fù)責(zé)組織項(xiàng)目各項(xiàng)評(píng)審會(huì)議及項(xiàng)目例會(huì),制定并推廣項(xiàng)目流程規(guī)范,確保項(xiàng)目有序進(jìn)行;
3、負(fù)責(zé)與項(xiàng)目外部合作伙伴進(jìn)行溝通,制定流程規(guī)范雙方合作,并推動(dòng)合作事宜;
4、及時(shí)發(fā)現(xiàn)并跟蹤解決項(xiàng)目問(wèn)題,有效管理項(xiàng)目風(fēng)險(xiǎn)。
",
                "LastUpdateTime":"2021年01月21日",
                "PostURL":"http://careers.tencent.com/jobdesc.html?postId=1346716678288842752",
                "SourceID":1,
                "IsCollect":false,
                "IsValid":true
            },
            {
                "Id":0,
                "PostId":"1346716729744564224",
                "RecruitPostId":71331,
                "RecruitPostName":"41071-騰訊會(huì)議產(chǎn)品策劃(平臺(tái)方向)(CSIG全資子公司)",
                "CountryName":"中國(guó)",
                "LocationName":"西安",
                "BGName":"CSIG",
                "ProductName":"騰訊云",
                "CategoryName":"產(chǎn)品",
                "Responsibility":"1、負(fù)責(zé)騰訊會(huì)議企業(yè)管理平臺(tái)的產(chǎn)品策劃工作,包括企業(yè)運(yùn)營(yíng)平臺(tái)、運(yùn)維、會(huì)控平臺(tái)和工具的產(chǎn)品設(shè)計(jì)和迭代優(yōu)化;
2、協(xié)調(diào)和推動(dòng)研發(fā)團(tuán)隊(duì)完成產(chǎn)品開發(fā)、需求落地,并能在需求上線后進(jìn)行持續(xù)數(shù)據(jù)分析和反饋跟進(jìn),不斷提升產(chǎn)品競(jìng)爭(zhēng)力;
3、根據(jù)行業(yè)場(chǎng)景抽象用戶需求,沉淀面向不同類型客戶的云端管控平臺(tái)解決方案;
 ",
                "LastUpdateTime":"2021年01月21日",
                "PostURL":"http://careers.tencent.com/jobdesc.html?postId=1346716729744564224",
                "SourceID":1,
                "IsCollect":false,
                "IsValid":true
            },
            {
                "Id":0,
                "PostId":"1346062593894129664",
                "RecruitPostId":71199,
                "RecruitPostName":"41071-騰訊會(huì)議產(chǎn)品策劃(CSIG全資子公司)",
                "CountryName":"中國(guó)",
                "LocationName":"西安",
                "BGName":"CSIG",
                "ProductName":"騰訊云",
                "CategoryName":"產(chǎn)品",
                "Responsibility":"負(fù)責(zé)騰訊會(huì)議的產(chǎn)品策劃工作:
1、研究海外用戶辦公習(xí)慣及SaaS市場(chǎng)動(dòng)態(tài),調(diào)研海外相關(guān)SaaS產(chǎn)品并輸出產(chǎn)品調(diào)研結(jié)論,綜合市場(chǎng)情況和用戶需求輸出高質(zhì)量的產(chǎn)品需求或解決方案;
2、負(fù)責(zé)騰訊會(huì)議各產(chǎn)品線的英文版的功能同步和產(chǎn)品設(shè)計(jì)工作,把關(guān)產(chǎn)品功能同步和國(guó)際版需求改造等;
3、協(xié)調(diào)和推動(dòng)研發(fā)團(tuán)隊(duì)完成產(chǎn)品開發(fā)、需求落地,并能在需求上線后進(jìn)行持續(xù)數(shù)據(jù)分析和反饋跟進(jìn),不斷提升產(chǎn)品競(jìng)爭(zhēng)力; ",
                "LastUpdateTime":"2021年01月21日",
                "PostURL":"http://careers.tencent.com/jobdesc.html?postId=1346062593894129664",
                "SourceID":1,
                "IsCollect":false,
                "IsValid":true
            },
            {
                "Id":0,
                "PostId":"1352161575309418496",
                "RecruitPostId":72134,
                "RecruitPostName":"CSIG16-推薦算法高級(jí)工程師",
                "CountryName":"中國(guó)",
                "LocationName":"北京",
                "BGName":"CSIG",
                "ProductName":"",
                "CategoryName":"技術(shù)",
                "Responsibility":"1. 參與地圖場(chǎng)景下推薦算法優(yōu)化,持續(xù)提升轉(zhuǎn)化效果和用戶體驗(yàn);
2. 負(fù)責(zé)地圖場(chǎng)景下推薦引擎架構(gòu)設(shè)計(jì)和開發(fā)工作;
3. 跟進(jìn)業(yè)界推薦領(lǐng)域最新進(jìn)展,并推動(dòng)其在地圖場(chǎng)景下落地。",
                "LastUpdateTime":"2021年01月21日",
                "PostURL":"http://careers.tencent.com/jobdesc.html?postId=0",
                "SourceID":1,
                "IsCollect":false,
                "IsValid":true
            },
            {
                "Id":0,
                "PostId":"1352158432852975616",
                "RecruitPostId":72133,
                "RecruitPostName":"41071-騰訊云SDK 終端研發(fā)工程師(CSIG全資子公司)",
                "CountryName":"中國(guó)",
                "LocationName":"西安",
                "BGName":"CSIG",
                "ProductName":"",
                "CategoryName":"技術(shù)",
                "Responsibility":"1. 負(fù)責(zé)騰訊云 GME SDK(游戲多媒體引擎)的開發(fā)和優(yōu)化工作,并配套開發(fā)相應(yīng)的場(chǎng)景解決方案業(yè)務(wù)流程,以滿足不同場(chǎng)景和不同行業(yè)的客戶需求; 
2. 全流程參與客戶需求咨詢、需求評(píng)估、方案設(shè)計(jì)、方案編碼實(shí)施及交付工作; 
3. 負(fù)責(zé)優(yōu)化騰訊云GME產(chǎn)品易用性,并跟蹤客戶的接入成本、完善服務(wù)體系,解決客戶使用產(chǎn)品服務(wù)和解決方案過(guò)程中的技術(shù)問(wèn)題,不斷完善問(wèn)題處理機(jī)制和流程。",
                "LastUpdateTime":"2021年01月21日",
                "PostURL":"http://careers.tencent.com/jobdesc.html?postId=0",
                "SourceID":1,
                "IsCollect":false,
                "IsValid":true
            },
            {
                "Id":0,
                "PostId":"1352155053116366848",
                "RecruitPostId":72131,
                "RecruitPostName":"40931-智慧交通數(shù)據(jù)平臺(tái)前端開發(fā)工程師(北京)",
                "CountryName":"中國(guó)",
                "LocationName":"北京",
                "BGName":"CSIG",
                "ProductName":"",
                "CategoryName":"技術(shù)",
                "Responsibility":"負(fù)責(zé)騰訊智慧交通領(lǐng)域的平臺(tái)前端開發(fā)工作;
負(fù)責(zé)規(guī)劃與制定前端整體發(fā)展計(jì)劃與基礎(chǔ)建設(shè);
負(fù)責(zé)完成前端基礎(chǔ)架構(gòu)設(shè)計(jì)與組件抽象。",
                "LastUpdateTime":"2021年01月21日",
                "PostURL":"http://careers.tencent.com/jobdesc.html?postId=0",
                "SourceID":1,
                "IsCollect":false,
                "IsValid":true
            },
            {
                "Id":0,
                "PostId":"1306860769169645568",
                "RecruitPostId":66367,
                "RecruitPostName":"35566-HRBP(騰訊全資子公司)",
                "CountryName":"中國(guó)",
                "LocationName":"武漢",
                "BGName":"CSIG",
                "ProductName":"",
                "CategoryName":"人力資源",
                "Responsibility":"負(fù)責(zé)區(qū)域研發(fā)公司的HR政策、制度、體系與重點(diǎn)項(xiàng)目在部門內(nèi)部的落地與推動(dòng)執(zhí)行;
深入了解所負(fù)責(zé)領(lǐng)域業(yè)務(wù)與人員發(fā)展?fàn)顩r,評(píng)估并明確組織與人才發(fā)展對(duì)HR的需求;
驅(qū)動(dòng)平臺(tái)資源提供HR解決方案,并整合內(nèi)部資源推動(dòng)執(zhí)行;提升管理干部的人力資源管理能力,關(guān)注關(guān)鍵人才融入與培養(yǎng),確保持續(xù)的溝通與反饋;
協(xié)助管理層進(jìn)行人才管理、團(tuán)隊(duì)發(fā)展、組織氛圍建設(shè)等,確保公司文化在所屬業(yè)務(wù)領(lǐng)域的落地;
負(fù)責(zé)所對(duì)接部門的人才招聘工作;
",
                "LastUpdateTime":"2021年01月21日",
                "PostURL":"http://careers.tencent.com/jobdesc.html?postId=1306860769169645568",
                "SourceID":1,
                "IsCollect":false,
                "IsValid":true
            },
            {
                "Id":0,
                "PostId":"1351353005709991936",
                "RecruitPostId":71981,
                "RecruitPostName":"35566-招聘經(jīng)理(騰訊云全資子公司)",
                "CountryName":"中國(guó)",
                "LocationName":"武漢",
                "BGName":"CSIG",
                "ProductName":"",
                "CategoryName":"人力資源",
                "Responsibility":"1、負(fù)責(zé)CSIG區(qū)域研發(fā)公司相關(guān)部門的社會(huì)招聘及校園招聘工作,制定有效的招聘策略并推動(dòng)落地執(zhí)行,保障人才開源、甄選和吸引;
2、負(fù)責(zé)相關(guān)部門人力資源市場(chǎng)分析,有效管理并優(yōu)化招聘渠道;
3、參與招聘體系化建設(shè),甄選相關(guān)優(yōu)化項(xiàng)目,有效管理及優(yōu)化招聘渠道。",
                "LastUpdateTime":"2021年01月21日",
                "PostURL":"http://careers.tencent.com/jobdesc.html?postId=1351353005709991936",
                "SourceID":1,
                "IsCollect":false,
                "IsValid":true
            },
            {
                "Id":0,
                "PostId":"1351838518279675904",
                "RecruitPostId":72081,
                "RecruitPostName":"35566-雇主品牌經(jīng)理(騰訊云全資子公司)",
                "CountryName":"中國(guó)",
                "LocationName":"武漢",
                "BGName":"CSIG",
                "ProductName":"",
                "CategoryName":"人力資源",
                "Responsibility":"1、負(fù)責(zé)騰訊云區(qū)域研發(fā)公司雇主品牌的規(guī)劃和建設(shè)工作,結(jié)合業(yè)務(wù)招聘需求,制定有效的品牌方案;
2、負(fù)責(zé)訊云區(qū)域研發(fā)公司的公眾號(hào)、媒體賬號(hào)的內(nèi)容策劃、撰寫,協(xié)調(diào)相關(guān)資源完成高質(zhì)量?jī)?nèi)容輸出;
3、負(fù)責(zé)招聘創(chuàng)意項(xiàng)目的策劃和項(xiàng)目統(tǒng)籌,借助各種平臺(tái)渠道,完成創(chuàng)意內(nèi)容的傳播觸達(dá),提升人選對(duì)騰訊云區(qū)域研發(fā)公司的認(rèn)知和意向度;",
                "LastUpdateTime":"2021年01月21日",
                "PostURL":"http://careers.tencent.com/jobdesc.html?postId=1351838518279675904",
                "SourceID":1,
                "IsCollect":false,
                "IsValid":true
            },
            {
                "Id":0,
                "PostId":"1199244591342030848",
                "RecruitPostId":55432,
                "RecruitPostName":"22989-數(shù)據(jù)庫(kù)解決方案架構(gòu)師(北京/上海/深圳)",
                "CountryName":"中國(guó)",
                "LocationName":"上海",
                "BGName":"CSIG",
                "ProductName":"",
                "CategoryName":"產(chǎn)品",
                "Responsibility":"支持客戶的應(yīng)用架構(gòu)設(shè)計(jì),了解客戶的業(yè)務(wù)邏輯和應(yīng)用架構(gòu),給出合理的產(chǎn)品方案建議; 
支持客戶的數(shù)據(jù)庫(kù)方案設(shè)計(jì),從運(yùn)維、成本、流程等角度主導(dǎo)云數(shù)據(jù)庫(kù)產(chǎn)品落地; 
梳理客戶的核心訴求,提煉為普適性的產(chǎn)品能力,推動(dòng)研發(fā)團(tuán)隊(duì)提升產(chǎn)品體驗(yàn);
根據(jù)客戶的行業(yè)屬性,定制行業(yè)場(chǎng)景的解決方案,提升云數(shù)據(jù)庫(kù)的影響力;",
                "LastUpdateTime":"2021年01月21日",
                "PostURL":"http://careers.tencent.com/jobdesc.html?postId=1199244591342030848",
                "SourceID":1,
                "IsCollect":false,
                "IsValid":true
            }
        ]
    }
}

經(jīng)過(guò)對(duì)比發(fā)現(xiàn)上面的json數(shù)據(jù)與網(wǎng)頁(yè)信息是完全相同的。

看到j(luò)son數(shù)據(jù)你有沒有一絲的驚喜,終于到了可以大顯身手的時(shí)候了。

你會(huì)發(fā)現(xiàn),上面每一個(gè)節(jié)點(diǎn)的參數(shù)都是獨(dú)立的,不會(huì)存在重復(fù),那我們可以這樣寫:

def get_info(data):
    recruit_post_name = jsonpath.jsonpath(data, '$..RecruitPostName')
    category_name = jsonpath.jsonpath(data, '$..CategoryName')
    country_name= jsonpath.jsonpath(data, '$..CountryName')
    location_name = jsonpath.jsonpath(data, '$.Data.Posts..LocationName')
    responsibility = jsonpath.jsonpath(data, '$..Responsibility')
    responsibility = [i.replace('n', '').replace('r', '') for i in responsibility]
    last_update_time = jsonpath.jsonpath(data, '$..LastUpdateTime')

運(yùn)行上面的代碼,你會(huì)發(fā)現(xiàn)成功的獲取到了每一組數(shù)據(jù)。

關(guān)于翻頁(yè)

打開網(wǎng)頁(yè)之后你會(huì)發(fā)現(xiàn)騰訊的職位信息一共有850頁(yè),但是前面的json數(shù)據(jù)僅僅只有第一頁(yè)的數(shù)據(jù)怎么辦呢?

不用擔(dān)心,直接點(diǎn)擊第二頁(yè)看看網(wǎng)絡(luò)數(shù)據(jù)有什么變化。

圖片

如上圖所示,當(dāng)點(diǎn)擊第二頁(yè)的時(shí)候,又加載出來(lái)了一個(gè)數(shù)據(jù),點(diǎn)擊進(jìn)去之后你就會(huì)發(fā)現(xiàn),這個(gè)數(shù)據(jù)剛好就是第二頁(yè)的職位信息。

那接下來(lái)就是發(fā)現(xiàn)規(guī)律的時(shí)候了,第一頁(yè)與第二頁(yè)保存JSON數(shù)據(jù)的URL如下所示:

# 第一頁(yè)
https://careers.tencent.com/tencentcareer/api/post/Query?timestamp=1611215870971&countryId=&cityId=&bgIds=&productId=&categoryId=&parentCategoryId=&attrId=&keyword=&pageIndex=1&pageSize=10&language=zh-cn&area=cn

# 第二頁(yè)
https://careers.tencent.com/tencentcareer/api/post/Query?timestamp=1611217026103&countryId=&cityId=&bgIds=&productId=&categoryId=&parentCategoryId=&attrId=&keyword=&pageIndex=2&pageSize=10&language=zh-cn&area=cn

經(jīng)過(guò)測(cè)試發(fā)現(xiàn),可以將URL地址進(jìn)行簡(jiǎn)化,簡(jiǎn)化后的URL如下所示:

# 第一頁(yè)
https://careers.tencent.com/tencentcareer/api/post/Query?pageIndex=1&pageSize=10

# 第二頁(yè)
https://careers.tencent.com/tencentcareer/api/post/Query?pageIndex=1&pageSize=10

數(shù)據(jù)保存

將爬取下來(lái)的數(shù)據(jù)保存至csv文件,核心代碼如下所示:

df = pd.DataFrame({
        'country_name': country_name,
        'location_name': location_name,
        'recruit_post_name':recruit_post_name,
        'category_name': category_name,
        'responsibility':responsibility,
        'last_update_time':last_update_time
    })

if __name__ == '__main__':
    tengxun = TengXun()
    df = pd.DataFrame(columns=['country_name', 'location_name', 'category_name','recruit_post_name', 'responsibility', 'last_update_time'])

    for page in range(1, 330):
        print(f'正在獲取第{page}頁(yè)')
        url = tengxun.get_url(page)
        data = tengxun.get_json(url)
        time.sleep(0.03)

        df1 = get_info(data)
        df = pd.concat([df, df1])
        df = df.reset_index(drop=True)
    # pprint.pprint(data)

    df.to_csv('../data/騰訊招聘.csv', encoding='utf-8-sig')

最后結(jié)果

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 網(wǎng)站
    +關(guān)注

    關(guān)注

    2

    文章

    259

    瀏覽量

    23252
  • 字符串
    +關(guān)注

    關(guān)注

    1

    文章

    585

    瀏覽量

    20613
  • 數(shù)組
    +關(guān)注

    關(guān)注

    1

    文章

    417

    瀏覽量

    26035
  • JSON
    +關(guān)注

    關(guān)注

    0

    文章

    119

    瀏覽量

    7022
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    示波器的使用方法

    示波器的使用方法 1 示波器使用        本節(jié)介紹示波器的使用方法。示波器種類、型號(hào)很多,功能也不同。
    發(fā)表于 01-14 13:06 ?1.8w次閱讀

    Matlab使用方法和程序設(shè)計(jì)

    Matlab使用方法和程序設(shè)計(jì) 實(shí)驗(yàn)一 Matlab使用方法和程序設(shè)計(jì)一、
    發(fā)表于 10-17 00:18 ?5422次閱讀
    Matlab<b class='flag-5'>使用方法</b>和程序設(shè)計(jì)

    示波器的使用方法

    數(shù)字萬(wàn)用表使用方法和示波器的使用方法詳解。
    發(fā)表于 03-14 10:38 ?32次下載

    AT指令使用方法

    AT指令使用方法
    發(fā)表于 07-21 14:18 ?23次下載

    xilinx 原語(yǔ)使用方法

    xilinx 原語(yǔ)使用方法
    發(fā)表于 10-17 08:57 ?11次下載
    xilinx 原語(yǔ)<b class='flag-5'>使用方法</b>

    CC debuger的使用方法

    CC debuger的使用方法
    發(fā)表于 10-18 10:07 ?5次下載

    ORCAD PSPICE 使用方法

    ORCAD PSPICE 使用方法
    發(fā)表于 10-18 14:52 ?39次下載
    ORCAD PSPICE <b class='flag-5'>使用方法</b>

    xilinx原語(yǔ)使用方法

    xilinx原語(yǔ)使用方法
    發(fā)表于 10-19 08:50 ?15次下載
    xilinx原語(yǔ)<b class='flag-5'>使用方法</b>

    git使用方法

    git使用方法
    發(fā)表于 10-24 09:45 ?19次下載
    git<b class='flag-5'>使用方法</b>

    在Python中高效使用JSON的四種方法

    字典和列表是 Python的兩種數(shù)據(jù)類型,也是用來(lái)處理JSON的完美工具。本文將主要分享以下內(nèi)容:如何載入、編寫JSON?如何在命令行上優(yōu)化、校驗(yàn)JSON?如何通過(guò)使用JMESPath對(duì)JSO
    的頭像 發(fā)表于 09-14 15:17 ?2784次閱讀
    在Python中高效使用<b class='flag-5'>JSON</b>的四種<b class='flag-5'>方法</b>

    示波器的使用方法(三):示波器的使用方法詳解

    示波器的使用方法并非很難,重點(diǎn)在于正確使用示波器的使用方法。往期文章中,小編對(duì)模擬示波器的使用方法和數(shù)字示波器的使用方法均有所介紹。為增進(jìn)大家對(duì)示波器的
    的頭像 發(fā)表于 12-24 20:37 ?3398次閱讀

    什么是JSON劫持 JSON和XML的區(qū)別

    什么是JSON劫持 單從字面上就可以理解的出來(lái),JSON是一種輕量級(jí)的數(shù)據(jù)交換格式,而劫持就是對(duì)數(shù)據(jù)進(jìn)行竊取(或者應(yīng)該稱為打劫、攔截比較合適。惡意攻擊者通過(guò)某些特定的手段,將本應(yīng)該返回給用戶
    的頭像 發(fā)表于 08-05 10:09 ?1587次閱讀

    什么是JSON JSON的語(yǔ)法規(guī)則

    JSON數(shù)據(jù)交換格式 JSON(JavaScript Object Notation, JS 對(duì)象簡(jiǎn)譜) 是一種輕量級(jí)的數(shù)據(jù)交換格式。它基于 ECMAScript (歐洲計(jì)算機(jī)協(xié)會(huì)制定的js規(guī)范
    的頭像 發(fā)表于 08-25 15:40 ?2706次閱讀

    JSON工具簡(jiǎn)介及安裝使用方法說(shuō)明

    JSON Hero 是一個(gè)簡(jiǎn)單實(shí)用的 JSON 工具,通過(guò)簡(jiǎn)介美觀的 UI 及增強(qiáng)的額外功能,使得閱讀和理解 JSON 文檔變得更容易、直觀。
    的頭像 發(fā)表于 05-25 12:40 ?4108次閱讀

    645儀表以JSON格式上發(fā)方法

    之前我們已經(jīng)介紹了Modbus RTU儀表實(shí)現(xiàn)JSON格式上發(fā)云服務(wù)器的方法,類似的現(xiàn)在也可以支持645協(xié)議的儀表通過(guò)JSON格式上發(fā)服務(wù)器。
    的頭像 發(fā)表于 12-02 14:11 ?962次閱讀
    645儀表以<b class='flag-5'>JSON</b>格式上發(fā)<b class='flag-5'>方法</b>