亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

關于xpath網頁解析神器的介紹

發布時間:2020-07-02 11:37:25 來源:億速云 閱讀:246 作者:清晨 欄目:編程語言

小編給大家分享一下關于xpath網頁解析神器的介紹,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

使用XPath提取貓眼電影排行榜前100名。https://maoyan.com/board/4

XPath數據提取

XML介紹

XML稱為可擴展標記語言,XML是互聯網數據傳輸的重要工具,它可以跨越互聯網任何的平臺,不受編程語言和操作系統的限制,可以說它是一個擁有互聯網最高級別通行證的數據攜帶者。非常類似HTML。

HTML 和 XML的區別在于HTML主要用來顯示數據,XML是用來傳輸數據。

XML都是標簽閉合的。例如: …  成對出現。

<?xml version="1.0" encoding="utf-8"?>

<bookstore>

  <book category="奇幻">
    <title>冰與火之歌</title>
    <author>喬治 馬丁</author>
    <year>2005</year>
    <price>365.00</price>
  </book>

  <book category="童話">
    <title>哈利波特與死亡圣器</title>
    <author>J K. 羅琳</author>
    <year>2005</year>
    <price>48.98</price>
  </book>

  <book category="編程">
    <title>Python編程-從入門到放棄</title>
    <author>挖掘機小王子</author>
    <year>2048</year>
    <price>99.00</price>
  </book>

  <book category="web" cover="paperback">
    <title>Python編程-從看懂到看開</title>
    <author>尼古拉斯-趙四</author>
    <year>2003</year>
    <price>39.95</price>
  </book>

</bookstore>

在上面的xml語法中存在父子,先輩等關系。

XPath介紹

XPath (XML Path Language) 是一門在 XML 文檔中查找信息的語言,可用來在 XML/HTML 文檔中對元素和屬性進行遍歷,并提取相應元素。

也是一種數據提取方式,只不過針對的是HTML/XML數據,因為爬蟲主要和HTML頁面打交道。

XPath匹配規則

下表是XPath常用的規則:
關于xpath網頁解析神器的介紹

lxml庫

lxml 是一個Python第三方模塊。主要的功能是如何解析和提取 HTML/XML 數據。

lxml和正則類似,是一款高性能的 Python HTML/XML 解析器,我們可以利用之前學習的XPath語法,來快速的定位特定元素以及節點信息。

  • 安裝:pip install lxml

失敗的話指定下載源用 pip install lxml -i https://pypi.douban.com/simple  豆瓣源

再安裝 parsel 時會自動安裝 lxml,這里就不需要再次安裝了。

使用lxml模塊

初始化生成一個XPath解析對象,同時可以自動補全殘缺的HTML標簽。傳入網頁源碼。

from lxml import etree

string = """
  <book category="web" cover="paperback">
    <title>Python編程-從看懂到看開</title>
    <author>Python編程</author>
    <year>2003</year>
    <price>39.95</price>
  </book>
"""

# 再解析之前必須先轉化一下
html = etree.HTML(string)
# 返回結果是列表
result = html.xpath("//book[contains(@cover,'paper')]/title/text()")
result = html.xpath("//book[4]/title/text()")

print(result)

因為 parsellxml 進行了, 所以可以直接再 parsel 中無縫切換使用 xpath 。

使用XPath選取指定內容。括號里面書寫XPath語法規則。返回列表。

# -*- coding: utf-8 -*-
import requests
import parsel

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
}

response = requests.get('https://maoyan.com/board/4?offset=0', headers=headers)
html = response.text

# %% 選擇任意節點
sel = parsel.Selector(html)
# 提取 p 標簽
ps = sel.xpath('//p')
for p in ps:
    print(p.get())

案例:XPath提取貓眼電影

'''
貓眼電影:
https://maoyan.com/board/4?offset=20
    函數式:
        1. 獲取(請求)一頁的函數
        2. 定義解析函數(解析一頁)
        3. 寫入文件函數
        4. 循環函數
        5. python學習交流群:695185429
'''
import json
import requests
from lxml import etree


# 獲取響應
def getOnePage(url):
    '''獲取一頁的響應的函數'''

    response = requests.get(url)

    return response.text


# 解析響應 --> 結果
def parseOnePage(text):

    # 初始化解析
    html = etree.HTML(text)
    # 里面有所有的數據 先選擇上一層  這一層里面包含所有數據 然后循環遍歷
    data = html.xpath('//dl[@class="board-wrapper"]')
    # 遍歷提取所有的元素
    for dat in data:
        print(dat)
        # 繼續選取
        # 標題
        title = dat.xpath('.//div//a/text()')
        # 主演
        star = dat.xpath('.//p[@class="star"]/text()')
        # 時間
        releasetime = dat.xpath('//p[@class="releasetime"]/text()')

        for tit, sta, rel in zip(title, star, releasetime):
            # 在函數里面遇到return就終止
            # 生成器
            yield {
                '電影名字': tit,
                '主演': sta.strip(),
                '上映時間': rel
            }


def save2File(data):
    # with open('maoyan66.txt', 'a', encoding='utf-8') as fp:
    #     fp.write(data+'\n')

    with open('maoyan66.txt', 'a', encoding='utf-8') as fp:
        fp.write(json.dumps(data, ensure_ascii=False)+'\n')


if __name__ == "__main__":

    for page in range(10):

        # 一頁網址
        url = f'https://maoyan.com/board/4?offset={page*10}'
        # 調用
        r = getOnePage(url)
        # 解析數據 返回生成器
        result = parseOnePage(r)
        for res in result:
            # with open('maoyan.txt','a',encoding='utf-8') as fp:
            #     # 打印到文件
            #     print(str(res), file=fp)
            save2File(str(res))


看完了這篇文章,相信你對關于xpath網頁解析神器的介紹有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

荆门市| 崇仁县| 西丰县| 宝坻区| 义乌市| 肇庆市| 洮南市| 禹州市| 静乐县| 那曲县| 衡南县| 东光县| 平江县| 滦平县| 灵璧县| 开阳县| 镇原县| 葫芦岛市| 吉首市| 巴马| 锡林浩特市| 宣城市| 萍乡市| 德化县| 泗洪县| 宜丰县| 营口市| 兰坪| 门源| 金门县| 绥化市| 辽阳市| 自贡市| 清新县| 灵璧县| 图木舒克市| 镇远县| 枣庄市| 论坛| 无棣县| 晋城|