最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python爬蟲JSON及JSONPath運行原理詳解

 更新時間:2020年06月04日 11:26:01   作者:程序員的人生A  
這篇文章主要介紹了Python爬蟲JSON及JSONPath運行原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

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

JsonPath 是一種信息抽取類庫,是從JSON文檔中抽取指定信息的工具,提供多種語言實現(xiàn)版本,包括:Javascript, Python, PHP 和 Java。

JsonPath 對于 JSON 來說,相當于 XPATH 對于 XML。

JsonPath與XPath語法對比:

Json結(jié)構(gòu)清晰,可讀性高,復(fù)雜度低,非常容易匹配,下表中對應(yīng)了XPath的用法。

相關(guān)推薦:《Python相關(guān)教程》

利用JSONPath爬取拉勾網(wǎng)上所有的城市

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import urllib2
# json解析庫,對應(yīng)到lxml
import json
# json的解析語法,對應(yīng)到xpath
import jsonpath
url = "http://www.lagou.com/lbs/getAllCitySearchLabels.json"
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36'}
request = urllib2.Request(url, headers = headers)
response = urllib2.urlopen(request)
# 取出json文件里的內(nèi)容,返回的格式是字符串
html = response.read()
# 把json形式的字符串轉(zhuǎn)換成python形式的Unicode字符串
unicodestr = json.loads(html)
# Python形式的列表
city_list = jsonpath.jsonpath(unicodestr, "$..name")
#for item in city_list:
#  print item
# dumps()默認中文為ascii編碼格式,ensure_ascii默認為Ture
# 禁用ascii編碼格式,返回的Unicode字符串,方便使用
array = json.dumps(city_list, ensure_ascii=False)
#json.dumps(city_list)
#array = json.dumps(city_list)
with open("lagoucity.json", "w") as f:
  f.write(array.encode("utf-8"))

結(jié)果:

糗事百科爬取

利用XPATH的模糊查詢

獲取每個帖子里的內(nèi)容

保存到 json 文件內(nèi)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import urllib2
import json
from lxml import etree
url = "http://www.qiushibaike.com/8hr/page/2/"
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36'}
request = urllib2.Request(url, headers = headers)
html = urllib2.urlopen(request).read()
# 響應(yīng)返回的是字符串,解析為HTML DOM模式 text = etree.HTML(html)
text = etree.HTML(html)
# 返回所有段子的結(jié)點位置,contains()模糊查詢方法,第一個參數(shù)是要匹配的標簽,第二個參數(shù)是標簽名部分內(nèi)容
node_list = text.xpath('//div[contains(@id, "qiushi_tag")]')
items ={}
for node in node_list:
  # xpath返回的列表,這個列表就這一個參數(shù),用索引方式取出來,用戶名
  username = node.xpath('./div/a/@title')[0]
  # 取出標簽下的內(nèi)容,段子內(nèi)容
  content = node.xpath('.//div[@class="content"]/span')[0].text
  # 取出標簽里包含的內(nèi)容,點贊
  zan = node.xpath('.//i')[0].text
  # 評論
  comments = node.xpath('.//i')[1].text
  items = {
    "username" : username,
    "content" : content,
    "zan" : zan,
    "comments" : comments
  }
  with open("qiushi.json", "a") as f:
    f.write(json.dumps(items, ensure_ascii=False).encode("utf-8") + "
")

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python調(diào)用Delphi寫的Dll代碼示例

    python調(diào)用Delphi寫的Dll代碼示例

    這篇文章主要介紹了python調(diào)用Delphi寫的Dll代碼示例,具有一定參考價值,需要的朋友可以了解下。
    2017-12-12
  • pytorch GPU和CPU模型相互加載方式

    pytorch GPU和CPU模型相互加載方式

    在PyTorch中,保存和加載模型有兩種主要方式:直接保存整個模型結(jié)構(gòu)加權(quán)重,或者只保存模型的參數(shù),直接保存整個模型的方法簡單,但不夠靈活,且可能存在模型結(jié)構(gòu)不一致的風險,推薦的做法是只保存模型參數(shù),這種方法需要在加載前定義與原模型結(jié)構(gòu)相同的模型
    2024-09-09
  • Python中如何使用Matplotlib庫繪制圖形

    Python中如何使用Matplotlib庫繪制圖形

    Matplotlib是一個Python的2D繪圖庫,通過Matplotlib開發(fā)者可以僅需要幾行代碼,便可以生成繪圖,直方圖,功率譜,條形圖,錯誤圖,散點圖等,這篇文章主要給大家介紹了Python中如何使用Matplotlib庫繪制圖形的相關(guān)資料
    2022-07-07
  • Python 實現(xiàn)Mac 屏幕截圖詳解

    Python 實現(xiàn)Mac 屏幕截圖詳解

    今天小編就為大家分享一篇對Python 實現(xiàn)Mac 屏幕截圖詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-10-10
  • 詳解Python中__new__和__init__的區(qū)別與聯(lián)系

    詳解Python中__new__和__init__的區(qū)別與聯(lián)系

    在Python中,每個對象都有兩個特殊的方法:__new__和__init__,本文將詳細介紹這兩個方法的不同之處以及它們之間的聯(lián)系,具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • django從請求到響應(yīng)的過程深入講解

    django從請求到響應(yīng)的過程深入講解

    這篇文章主要給大家介紹了關(guān)于django從請求到響應(yīng)的過程的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用django具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-08-08
  • 詳解Matplotlib繪圖之屬性設(shè)置

    詳解Matplotlib繪圖之屬性設(shè)置

    這篇文章主要介紹了詳解Matplotlib繪圖之屬性設(shè)置,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • Flask框架Jinjia模板常用語法總結(jié)

    Flask框架Jinjia模板常用語法總結(jié)

    這篇文章主要介紹了Flask框架Jinjia模板常用語法,結(jié)合實例形式總結(jié)分析了Jinjia模板的變量、賦值、流程控制、函數(shù)、塊、宏等基本使用方法,需要的朋友可以參考下
    2018-07-07
  • windows+vscode安裝paddleOCR運行環(huán)境的步驟

    windows+vscode安裝paddleOCR運行環(huán)境的步驟

    這篇文章主要介紹了windows+vscode安裝paddleOCR運行環(huán)境,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • python中cryptography庫的實現(xiàn)

    python中cryptography庫的實現(xiàn)

    本文主要介紹了python中cryptography庫的實現(xiàn),包括Fernet、hash、AES、RSA等加密算法的使用,具有一定的參加價值,感興趣的可以了解一下
    2025-01-01

最新評論

平泉县| 扶绥县| 梁河县| 客服| 温宿县| 营山县| 武安市| 南投市| 德令哈市| 革吉县| 珠海市| 海伦市| 敦煌市| 广丰县| 长寿区| 临汾市| 宝清县| 祁东县| 沅江市| 满洲里市| 江陵县| 思南县| 攀枝花市| 浙江省| 姜堰市| 天峻县| 资源县| 通许县| 新安县| 晋中市| 渝中区| 德昌县| 乡城县| 通河县| 神木县| 西乌珠穆沁旗| 资源县| 宜川县| 望都县| 淅川县| 郸城县|