[英]get element and change element text with python and lxml
首先,我知道在StackOverflow上已經有很多關於python和lxml的問題,即使不是全部,我也確實閱讀了其中的大部分內容。 目前,我正在尋找這個問題的更全面的答案。
我正在做一些HTML轉換,我需要語法分析HTML,然后對href
, img
等進行一些內容更改。
這是我現在擁有的簡化版本:
with open(fileName, "r") as inFile:
inputS = inFile.read()
myTree = fromstring(inputS) #parse etree from HTML content
breadCrumb = myTree.get_element_by_id("breadcrumb") #a list of elements with matching id
breadCrumbContent = breadCrumb[0].text_content().strip() #text content of bread crumb
h1 = myTree.xpath('//h1') #another way, get elements by xpath
h1Content = h1[0].text_content().strip() #get text content
getTail = myTree.cssselect('table.results > tr > td > a + span + br') #get list of elements using css select
所以基本上這就是我目前所知道的。 還有其他使用lxml獲取元素/屬性的方法嗎? 我知道他們可能不是最好的方法,但請耐心等待,我對這件事一無所知。
以下是我想做的。 我有:
<img src="images/macmail10.gif" alt="" width="555" height="485" /><br />
<a href="http://www.some_url.com/faq/general_faq.html" target="_blank">General FAQs page</a>
它們可以嵌套在div
和p
類的其他元素中。 我要做的是以編程方式查找那些元素; 對於圖像,我想提取src
,對其進行一些處理,然后將src
設置為其他內容(例如src="images/something.jpg"
到src="something_images.jpg"
),與href
相同,我想更改它以使其指向其他地方。
除此之外,我還想從樹中刪除一些元素以簡化它,例如:
<head>
<title>something goes here</title>
</head>
<div>
<p id="some_p"> Some content </p>
</div>
我想刪除頭節點和div,我將能夠使用id="some_p"
來獲得p,是否有任何方法可以獲取父元素? 還有什么辦法可以刪除那些元素? (在這種情況下,查找head
,移除head
,然后查找id="some_p"
,獲取parent
並刪除它。
謝謝!
==================================================
更新:我已經找到了解決方案,並且已經使用lxml.etree完成了編碼。 我將在stackoverflow允許我后盡快發布答案。 我真的希望這個問題的答案對其他人不得不處理HTML解析時有所幫助!
lxml
和ElementTree
非常相似 。 實際上,lxml文檔站點的ElementTree部分僅指向ElementTree的文檔。
您可以嘗試瀏覽概述頁面底部的ElementTree教程和示例 。 由於ElementTree是Python發行版的一部分,因此它傾向於被廣泛記錄(並易於Google搜索)。 一旦找到了它,如果需要,可以擴展一些在ElementTree中找不到的lmlx魔術。 例如,lxml維護每個元素的父關系,而ElementTree則不。 您可以將父級關系添加到ElementTree,但這不是一個簡單的示例。
那是我的學習方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.