關於pythonjson採集的信息

本文目錄一覽:

python3 如果取json內容,謝謝

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。它基於ECMAScript的一個子集。 JSON採用完全獨立於語言的文本格式,但是也使用了類似於C語言家族的習慣(包括C、C++、Java、JavaScript、Perl、Python等)。這些特性使JSON成為理想的數據交換語言。易於人閱讀和編寫,同時也易於機器解析和生成(一般用於提升網絡傳輸速率)。

JSON在python中分別由list和dict組成。

這是用於序列化的兩個模塊:

json: 用於字符串和python數據類型間進行轉換

pickle: 用於python特有的類型和python的數據類型間進行轉換

Json模塊提供了四個功能:dumps、dump、loads、load

pickle模塊提供了四個功能:dumps、dump、loads、load

json dumps把數據類型轉換成字符串 dump把數據類型轉換成字符串並存儲在文件中  loads把字符串轉換成數據類型  load把文件打開從字符串轉換成數據類型

json是可以在不同語言之間交換數據的,而pickle只在python之間使用。json只能序列化最基本的數據類型,josn只能把常用的數據類型序列化(列表、字典、列表、字符串、數字、),比如日期格式、類對象!josn就不行了。而pickle可以序列化所有的數據類型,包括類,函數都可以序列化。

【Python】淺談python中的json

一 前言  

   最近一直在做開發相關的工作–基於Django的web 平台,其中需要從model層傳輸數據到view 層做數據展示或者做業務邏輯處理。我們採用通用的Json格式–Json(JavaScript Object Notation) 是一種輕量級的數據交換格式,易於閱讀和程序解析。

二 認識Json

   2.1 Json 結構

   常見的Json格式為 「名稱/值」對的集合,其中 值可以是對象,列表,字典,字符串等等。比如

backup_data = {“back_to_host”: “dbbk0”,

“ip_address”: “10.10.20.3”,

“host_name”: “rac4”,

“port”: 3306}

  2.2 使用Json

  Python的Json模塊序列化與反序列化的過程分別是 編碼和解碼。這兩個過程涉及到兩組不同的函數

  編碼 把一個Python對象編碼轉換成Json字符串,json.dumps(data)/json.dump(data,file_handler)

  解碼 把Json格式字符串解碼轉換成Python對象,json.loads(data)/json.load(file_handler)

  在python中要使用Json模塊做相關操作,必須先導入:

import Json

  2.3 主要函數

  編碼函數主要有 json.dumps(data)/json.dump(data,file_handler)

   json.dumps()的參數是將python對象轉換為字符串,如使用json.dumps序列化的對象json_dumps=json.dumps({‘a’:1, ‘b’:2}) ,json_dumps='{“b”: 2, “a”: 1}’

   json.dump 是將內置類型序列化為json對象後寫入文件。

 解碼函數主要由json.loads(data)/json.load(file_handler)  

    json.loads的參數是內存對象,把Json格式字符串解碼轉換成Python對象,json_loads=json.loads(d_json)  #{ b”: 2, “a”: 1},使用load重新反序列化為dict

    json.load()的參數針對文件句柄,比如本地有一個文件/tmp/test.json  json_load=json.load(open(‘/tmp/test.json’))

具體案例參考如下:

In [3]: data={“back_to_host”: “rac1”,

…: “ip_address”: “10.215.20.3”,

…: “host_name”: “rac3”,

…: “port”: 3306}

In [7]: json_str=json.dumps(data)

In [8]: print json_str

{“ip_address”: “10.215.20.3”, “back_to_host”: “rac1”, “host_name”: “rac3”, “port”: 3306}

In [9]: json_loads=json.load(json_str)

—————————————————————————

AttributeError Traceback (most recent call last)

ipython-input-9-180506f16431 in module()

—- 1 json_loads=json.load(json_str)

/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.pyc in load(fp, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)

284

285 “”

注意 從上面的報錯信息來看 json.loads 傳參是字符串類型,並不是文件句柄,沒有 read()屬性。

In [10]: json_loads=json.loads(json_str)

In [11]: print json_loads

{u’back_to_host’: u’rac1′, u’ip_address’: u’10.215.20.3′, u’host_name’: u’rac3′, u’port’: 3306}

In [12]: type(json_loads)

Out[12]: dict

In [13]: type(json_str)

Out[13]: str

利用dump 將數據寫入 dump.json

In [17]: with open(‘/tmp/dump.json’,’w’) as f:

…: json.dump(json_str,f)

…:

yangyiDBA:~ yangyi$ cat /tmp/dump.json

“{\”ip_address\”: \”10.10.20.3\”, \”back_to_host\”: \”rac1\”, \”host_name\”: \”rac3\”, \”port\”: 3306}”

yangyiDBA:~ yangyi$

利用json.load 將dump.sjon的數據讀出來並賦值給 data 

In [18]: with open(‘/tmp/dump.json’,’r’) as f:

…: data=json.load(f)

…:

In [19]: print data

{“ip_address”: “10.10.20.3”, “back_to_host”: “rac1”, “host_name”: “rac3”, “port”: 3306}

三 小結

  本文算是一篇學習筆記,主要對比了json.loads/json.load  , json.dumps/ json.dump 的使用差異 ,方便以後更好的使用json 。

以上為本次分享內容,感謝觀看。

如何在scrapy框架下用python爬取json文件

生成Request的時候與一般的網頁是相同的,提交Request後scrapy就會下載相應的網頁生成Response,這時只用解析response.body按照解析json的方法就可以提取數據了。代碼示例如下(以京東為例,其中的parse_phone_price和parse_commnets是通過json提取的,省略部分代碼):

# -*- coding: utf-8 -*-

from scrapy.spiders import Spider, CrawlSpider, Rule

from scrapy.linkextractors import LinkExtractor

from jdcom.items import JdPhoneCommentItem, JdPhoneItem

from scrapy import Request

from datetime import datetime

import json

import logging

import re

logger = logging.getLogger(__name__)

class JdPhoneSpider(CrawlSpider):

name = “jdPhoneSpider”

start_urls = [“”]

rules = (

Rule(

LinkExtractor(allow=r”list\.html\?cat\=9987,653,655\page\=\d+\trans\=1\JL\=6_0_0″),

callback=”parse_phone_url”,

follow=True,

),

)

def parse_phone_url(self, response):

hrefs = response.xpath(“//div[@id=’plist’]/ul/li/div/div[@class=’p-name’]/a/@href”).extract()

phoneIDs = []

for href in hrefs:

phoneID = href[14:-5]

phoneIDs.append(phoneID)

commentsUrl = “” % phoneID

yield Request(commentsUrl, callback=self.parse_commnets)

def parse_phone_price(self, response):

phoneID = response.meta[‘phoneID’]

meta = response.meta

priceStr = response.body.decode(“gbk”, “ignore”)

priceJson = json.loads(priceStr)

price = float(priceJson[0][“p”])

meta[‘price’] = price

phoneUrl = “” % phoneID

yield Request(phoneUrl, callback=self.parse_phone_info, meta=meta)

def parse_phone_info(self, response):

pass

def parse_commnets(self, response):

commentsItem = JdPhoneCommentItem()

commentsStr = response.body.decode(“gbk”, “ignore”)

commentsJson = json.loads(commentsStr)

comments = commentsJson[‘comments’]

for comment in comments:

commentsItem[‘commentId’] = comment[‘id’]

commentsItem[‘guid’] = comment[‘guid’]

commentsItem[‘content’] = comment[‘content’]

commentsItem[‘referenceId’] = comment[‘referenceId’]

# 2016-09-19 13:52:49 %Y-%m-%d %H:%M:%S

datetime.strptime(comment[‘referenceTime’], “%Y-%m-%d %H:%M:%S”)

commentsItem[‘referenceTime’] = datetime.strptime(comment[‘referenceTime’], “%Y-%m-%d %H:%M:%S”)

commentsItem[‘referenceName’] = comment[‘referenceName’]

commentsItem[‘userProvince’] = comment[‘userProvince’]

# commentsItem[‘userRegisterTime’] = datetime.strptime(comment[‘userRegisterTime’], “%Y-%m-%d %H:%M:%S”)

commentsItem[‘userRegisterTime’] = comment.get(‘userRegisterTime’)

commentsItem[‘nickname’] = comment[‘nickname’]

commentsItem[‘userLevelName’] = comment[‘userLevelName’]

commentsItem[‘userClientShow’] = comment[‘userClientShow’]

commentsItem[‘productColor’] = comment[‘productColor’]

# commentsItem[‘productSize’] = comment[‘productSize’]

commentsItem[‘productSize’] = comment.get(“productSize”)

commentsItem[‘afterDays’] = int(comment[‘days’])

images = comment.get(“images”)

images_urls = “”

if images:

for image in images:

images_urls = image[“imgUrl”] + “;”

commentsItem[‘imagesUrl’] = images_urls

yield commentsItem

commentCount = commentsJson[“productCommentSummary”][“commentCount”]

goodCommentsCount = commentsJson[“productCommentSummary”][“goodCount”]

goodCommentsRate = commentsJson[“productCommentSummary”][“goodRate”]

generalCommentsCount = commentsJson[“productCommentSummary”][“generalCount”]

generalCommentsRate = commentsJson[“productCommentSummary”][“generalRate”]

poorCommentsCount = commentsJson[“productCommentSummary”][“poorCount”]

poorCommentsRate = commentsJson[“productCommentSummary”][“poorRate”]

phoneID = commentsJson[“productCommentSummary”][“productId”]

priceUrl = “” % phoneID

meta = {

“phoneID”: phoneID,

“commentCount”: commentCount,

“goodCommentsCount”: goodCommentsCount,

“goodCommentsRate”: goodCommentsRate,

“generalCommentsCount”: generalCommentsCount,

“generalCommentsRate”: generalCommentsRate,

“poorCommentsCount”: poorCommentsCount,

“poorCommentsRate”: poorCommentsRate,

}

yield Request(priceUrl, callback=self.parse_phone_price, meta=meta)

pageNum = commentCount / 10 + 1

for i in range(pageNum):

commentsUrl = “” % (phoneID, i)

yield Request(commentsUrl, callback=self.parse_commnets)

Python如何從.json文件中獲取數據?

json是一個文本數據,讀取進Python以後,可直接用eval函數解析文本成一個字典。或者可以用py自帶的json包。json.load 或者json.loads方法,前面那個可以直接讀文本文件,後面那個是讀取字符串的。

如何用python讀取json裏面的值啊

1、首先需要在桌面新建『json.txt』文件,內容為jsonline格式。

2、打開Python開發工具IDLE,新建『json.py』文件,並按照如圖所示書寫代碼。

3、F5運行程序,Shell打印出json文本信息。

4、這是一次性讀取所有內容,如果文件很大的情況,出於性能考慮要分批讀取內容,這樣要用到yield生成器,改寫lines()函數如下,注意yield一定要寫在with里,這樣才能每次從上一次讀取的位置繼續讀取。

5、繼續寫程序入口函數,這裡要注意readlines返回的是一個列表,要讀取裏面的內容,要再做一個循環來遍歷。

6、F5運行程序,Shell打印出json文本信息,這個利用生成器方式讀取的方式經常處理較大的文件。

用python怎麼提取這種json數據?

python自帶了json庫可以解析成dict

如果結合requests庫

resp_dict = requests.get(url).json()

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/219534.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-09 10:59
下一篇 2024-12-09 10:59

相關推薦

  • Java 監控接口返回信息報錯信息怎麼處理

    本文將從多個方面對 Java 監控接口返回信息報錯信息的處理方法進行詳細的闡述,其中包括如何捕獲異常、如何使用日誌輸出錯誤信息、以及如何通過異常處理機制解決報錯問題等等。以下是詳細…

    編程 2025-04-29
  • 使用Python爬蟲獲取電影信息的實現方法

    本文將介紹如何使用Python編寫爬蟲程序,來獲取和處理電影數據。需要了解基本的Python編程語言知識,並使用BeautifulSoup庫和Requests庫進行爬取。 一、準備…

    編程 2025-04-28
  • Python爬取網頁信息

    本文將從多個方面對Python爬取網頁信息做詳細的闡述。 一、爬蟲介紹 爬蟲是一種自動化程序,可以模擬人對網頁進行訪問獲取信息的行為。通過編寫代碼,我們可以指定要獲取的信息,將其從…

    編程 2025-04-28
  • 如何使用Python執行Shell命令並獲取執行過程信息

    本文將介紹如何使用Python執行Shell命令並獲取執行過程信息。我們將從以下幾個方面進行闡述: 一、執行Shell命令 Python內置的subprocess模塊可以方便地執行…

    編程 2025-04-28
  • Python實現身份信息模擬生成與查驗

    本文將從以下幾個方面對Python實現身份信息模擬生成與查驗進行詳細闡述: 一、身份信息生成 身份信息生成是指通過代碼生成符合身份信息規範的虛假數據。Python中,我們可以使用f…

    編程 2025-04-27
  • Dapper使用getschema獲取表信息

    本文旨在介紹Dapper中使用getschema獲取表信息的方法和注意事項。 一、獲取某張表的所有列信息 使用Dapper獲取某張表信息,可以使用 `IDbConnection.G…

    編程 2025-04-27
  • 已裝備我軍的空中信息化作戰平台

    本文將會從多個方面詳細闡述已裝備我軍的空中信息化作戰平台。 一、平台概述 已裝備我軍的空中信息化作戰平台是一個全新的作戰系統,具備實時數據採集、處理、分析、共享的能力。它可以在不同…

    編程 2025-04-27
  • 通過提交信息搜索-使用git

    本篇文章重點講解如何使用git通過提交信息來搜索。我們將從多個方面介紹如何使用git來搜索提交信息,並提供相應的代碼示例以供參考。 一、搜索方式 Git提供了三種搜索方式,分別為:…

    編程 2025-04-27
  • Linux查看系統信息

    一、CPU信息 Linux系統下,查看CPU的信息最常用的命令是lscpu。該命令可以顯示CPU架構、核心數量、線程數、緩存大小、CPU頻率等信息。例如: lscpu 該命令會輸出…

    編程 2025-04-24
  • 軟考 信息安全工程師

    軟考 信息安全工程師是一項技能型國家級資格認證考試,主要測試考生在信息安全領域的理論知識和實踐技能,是證明個人信息安全能力的重要證書。本文將從多個方面對軟考 信息安全工程師做詳細的…

    編程 2025-04-23

發表回復

登錄後才能評論