用Python3練習XPath語法

最近隔壁的童鞋在學習爬蟲中重要的一步:XPath語法。可惜在線測試(比如https://www.bejson.com/testtools/xpath/)的腳本可能有問題?利用“/@xx”獲取屬性的時候失敗,所以就用Python3寫了一個小腳本,用來做練習。


目前還有兩個小問題,一是無法使用etree的parse函數自己讀取文件,二是無法在輸入字符串中使用雙引號。目測不會再繼續更新。


#!/usr/bin/python3
# -*- coding: utf-8 -*-

from lxml import etree
import sys


if __name__ == '__main__':
    if len(sys.argv) == 2:
        filename = sys.argv[1]
    else:
        filename = input("Please input a filename which includes xml/html content: ")
    try:
        file = open(filename, 'r')
        data = file.read()

        html = etree.HTML(data)
        # html = etree.parse(filename)

        while True:
            xpath = input("XPath: ").strip()
            if xpath == '*':
                print("By.")
                break
            try:
                html_data = html.xpath(xpath)
                for item in html_data:
                    if type(item) == etree._ElementUnicodeResult:
                        print(item)
                    elif type(item) == etree._Element:
                        print(item.tag, item.attrib)
                    else:
                        print(item, type(item))
            except Exception as err:
                print("發生了一個錯誤!")
                print(err)
    except:
        print("文件不存在或不可讀!")

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章