爬蟲的解析方式一:JOSN解析

爱喝马黛茶的安东尼
發布: 2019-06-05 14:36:14
轉載
4931 人瀏覽過

眾多語言都能進行爬蟲,但基於python的爬蟲顯得更加簡潔,方便。爬蟲也成了python語言中不可或缺的一部分。爬蟲解析資料的方式有很多種,在上一篇介紹給大家的是#爬蟲能取得什麼樣的資料和具體的解析方式##,本篇帶給大家的是JSON解析。

爬蟲的解析方式一:JOSN解析

JSON

json簡單說就是javascript中的物件和數組,所以這兩個結構就是物件和陣列兩種結構,透過這兩種結構可以表示各種複雜的結構。

物件:

物件在js中表示為{ }括起來的內容,資料結構為{ key:value, key:value, ... }的鍵值對的結構,在物件導向的語言中,key為物件的屬性,value為對應的屬性值,所以很容易理解,取值方法為物件.key 取得屬性值,這個屬性值的型別可以是數字、字串、陣列、物件這幾種。

陣列:

陣列在js中是中括號[ ]括起來的內容,資料結構為["Python", "javascript", "C ", ...],取值方式和所有語言中一樣,使用索引獲取,字段值的類型可以是數字、字串、數組、物件幾種。

JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式,它使得人們很容易的進行閱讀和編寫。同時也方便了機器進行解析與產生。適用於進行資料互動的場景,例如網站前台與後台之間的資料互動。

import json
def resolveJson(path):
    file = open(path, "rb")
    fileJson = json.load(file)
    field = fileJson["field"]
    futures = fileJson["futures"]
    type = fileJson["type"]
    name = fileJson["name"]
    time = fileJson["time"]
    return (field, futures, type, name, time)
def output():
    result = resolveJson(path)
    print(result)
    for x in result:
        for y in x:
            print(y)
path = r"C:\Users\dell\Desktop\kt\test.json"
output()
登入後複製

注意函數傳回多個值時回傳的是一個元組tuple; 

#對一個字串進行for迴圈的時候會對每個字元進行遍歷

Python JSON

本章節我們將為大家介紹如何使用Python 語言來編碼和解碼JSON 物件。

JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式,易於人閱讀和編寫。


JSON 函數

使用 JSON 函數需要匯入 json 函式庫:import json。

函數                                           JSON 字串

json.loads                   將已編碼的JSON 字串解碼為Python 物件

json.dumps

json.dumps                用於將Python 物件編碼為JSON 字串。

語法

json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators =None, encoding="utf-8", default=None, sort_keys=False, **kw)

實例

##以下實例將陣列編碼為JSON 格式資料:

#!/usr/bin/python
import json
data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]
json = json.dumps(data)
print json
登入後複製
以上程式碼執行結果為:

[{"a": 1, "c": 3, "b": 2, "e": 5, "d": 4}]
登入後複製

使用參數讓JSON 資料格式化輸出:

>>> import json
>>> print json.dumps({'a': 'Runoob', 'b': 7}, sort_keys=True, indent=4, separators=(',', ': '))
{
    "a": "Runoob",
    "b": 7
}
登入後複製

python 原始型別向json 類型的轉換對照表:


Python   

                                                             object

list, tuple           str, unicode                                    string int, long, float                               numberTrue               true

False                             

None null

json.loads

json.loads 用于解码 JSON 数据。该函数返回 Python 字段的数据类型。

语法

json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])
登入後複製

实例

以下实例展示了Python 如何解码 JSON 对象:

<pre class="brush:php;toolbar:false">
#!/usr/bin/python
import json
jsonData = &#39;{"a":1,"b":2,"c":3,"d":4,"e":5}&#39;;
text = json.loads(jsonData)
print text
登入後複製

以上代码执行结果为:

{u&#39;a&#39;: 1, u&#39;c&#39;: 3, u&#39;b&#39;: 2, u&#39;e&#39;: 5, u&#39;d&#39;: 4}
登入後複製
登入後複製

json 类型转换到 python 的类型对照表:

JSON Python

object dict

array list

string unicode

number (int) int, long

number (real) float

true True

false False

null None

使用第三方库:Demjson

Demjson 是 python 的第三方模块库,可用于编码和解码 JSON 数据,包含了 JSONLint 的格式化及校验功能。

Github 地址:https://github.com/dmeranda/demjson

官方地址:http://deron.meranda.us/python/demjson/

环境配置

在使用 Demjson 编码或解码 JSON 数据前,我们需要先安装 Demjson 模块。本教程我们会下载 Demjson 并安装:

$ tar -xvzf demjson-2.2.3.tar.gz
$ cd demjson-2.2.3
$ python setup.py install
登入後複製

JSON 函数

函数 描述

encode 将 Python 对象编码成 JSON 字符串

decode 将已编码的 JSON 字符串解码为 Python 对象

encode

Python encode() 函数用于将 Python 对象编码成 JSON 字符串。

语法

demjson.encode(self, obj, nest_level=0)


实例

以下实例将数组编码为 JSON 格式数据:

<pre class="brush:php;toolbar:false">
#!/usr/bin/python
import demjson
data = [ { &#39;a&#39; : 1, &#39;b&#39; : 2, &#39;c&#39; : 3, &#39;d&#39; : 4, &#39;e&#39; : 5 } ]
json = demjson.encode(data)
print json
登入後複製

以上代码执行结果为:

[{"a":1,"b":2,"c":3,"d":4,"e":5}]
登入後複製


decode

Python 可以使用 demjson.decode() 函数解码 JSON 数据。该函数返回 Python 字段的数据类型。

语法

demjson.decode(self, txt)

实例

以下实例展示了Python 如何解码 JSON 对象:

<pre class="brush:php;toolbar:false">
#!/usr/bin/python
import demjson
json = &#39;{"a":1,"b":2,"c":3,"d":4,"e":5}&#39;;
text = demjson.decode(json)
print  text
登入後複製

以上代码执行结果为:

{u&#39;a&#39;: 1, u&#39;c&#39;: 3, u&#39;b&#39;: 2, u&#39;e&#39;: 5, u&#39;d&#39;: 4}
登入後複製
登入後複製

以上是爬蟲的解析方式一:JOSN解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!