最近隔壁的童鞋在學習爬蟲中重要的一步: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("文件不存在或不可讀!")