亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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結構清晰,可讀性高,復雜度低,非常容易匹配,下表中對應了XPath的用法。

相關推薦:《Python相關教程》

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

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import urllib2
# json解析庫,對應到lxml
import json
# json的解析語法,對應到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文件里的內容,返回的格式是字符串
html = response.read()
# 把json形式的字符串轉換成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"))

結果:

糗事百科爬取

利用XPATH的模糊查詢

獲取每個帖子里的內容

保存到 json 文件內

#!/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()
# 響應返回的是字符串,解析為HTML DOM模式 text = etree.HTML(html)
text = etree.HTML(html)
# 返回所有段子的結點位置,contains()模糊查詢方法,第一個參數(shù)是要匹配的標簽,第二個參數(shù)是標簽名部分內容
node_list = text.xpath('//div[contains(@id, "qiushi_tag")]')
items ={}
for node in node_list:
  # xpath返回的列表,這個列表就這一個參數(shù),用索引方式取出來,用戶名
  username = node.xpath('./div/a/@title')[0]
  # 取出標簽下的內容,段子內容
  content = node.xpath('.//div[@class="content"]/span')[0].text
  # 取出標簽里包含的內容,點贊
  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") + "
")

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

相關文章

  • python修改全局變量可以不加global嗎?

    python修改全局變量可以不加global嗎?

    這篇文章主要探討的是python修改全局變量可不可以不加global,我們在局部作用域內使用全局變量,需要使用global關鍵字進行聲明,不然便不可用,但下面小編就和大家分享可以修改的數(shù)據(jù)類型在函數(shù)內部做修改操作是不需要聲明global的商務情況,需要的朋友可以參考下
    2022-02-02
  • 深入了解和應用Python 裝飾器 @decorator

    深入了解和應用Python 裝飾器 @decorator

    在編程過程中,經(jīng)常遇到這樣的場景:登錄校驗,權限校驗,日志記錄等,這些功能代碼在各個環(huán)節(jié)都可能需要,但又十分雷同,通過裝飾器來抽象、剝離這部分代碼可以很好解決這類場景,這篇文章主要介紹了Python的裝飾器 @decorator,探討了使用的方式,需要的朋友可以參考下
    2019-04-04
  • pandas取出重復數(shù)據(jù)的方法

    pandas取出重復數(shù)據(jù)的方法

    今天小編就為大家分享一篇pandas取出重復數(shù)據(jù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • 使用fdopen實現(xiàn)對Python進程產(chǎn)生的文件進行權限最小化配置

    使用fdopen實現(xiàn)對Python進程產(chǎn)生的文件進行權限最小化配置

    用python進行文件的創(chuàng)建和讀寫操作時,我們很少關注所創(chuàng)建的文件的權限配置。本文就來聊聊如何使用fdopen實現(xiàn)對Python進程產(chǎn)生的文件進行權限最小化配置吧
    2023-03-03
  • Python中安裝庫的常用方法介紹

    Python中安裝庫的常用方法介紹

    大家好,本篇文章主要講的是Python中安裝庫的常用方法介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • python刪除文件、清空目錄的實現(xiàn)方法

    python刪除文件、清空目錄的實現(xiàn)方法

    這篇文章主要介紹了python刪除文件、清空目錄的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • Python腳本傳參數(shù)argparse模塊的使用

    Python腳本傳參數(shù)argparse模塊的使用

    這篇文章主要介紹了Python腳本傳參數(shù)argparse模塊的使用,文章圍繞argparse模塊的相關資料展開具體的使用方法,具有一的參考價值,需要的小伙伴可以參考一下
    2022-03-03
  • 巧用Python裝飾器 免去調用父類構造函數(shù)的麻煩

    巧用Python裝飾器 免去調用父類構造函數(shù)的麻煩

    巧用Python裝飾器 免去調用父類構造函數(shù)的麻煩,需要的朋友可以參考下
    2012-05-05
  • python實現(xiàn)多圖像疊置輸出

    python實現(xiàn)多圖像疊置輸出

    這篇文章主要為大家詳細介紹了python實現(xiàn)多圖像疊置輸出,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • 解決Numpy報錯:ImportError: numpy.core.multiarray failed

    解決Numpy報錯:ImportError: numpy.core.multiarray faile

    這篇文章主要介紹了解決Numpy報錯:ImportError: numpy.core.multiarray failed問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01

最新評論