簡體   English   中英

獲取元素並使用python和lxml更改元素文本

[英]get element and change element text with python and lxml

首先,我知道在StackOverflow上已經有很多關於python和lxml的問題,即使不是全部,我也確實閱讀了其中的大部分內容。 目前,我正在尋找這個問題的更全面的答案。

我正在做一些HTML轉換,我需要語法分析HTML,然后對hrefimg等進行一些內容更改。

這是我現在擁有的簡化版本:

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>

它們可以嵌套在divp類的其他元素中。 我要做的是以編程方式查找那些元素; 對於圖像,我想提取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解析時有所幫助!

lxmlElementTree 非常相似 實際上,lxml文檔站點的ElementTree部分僅指向ElementTree的文檔。

您可以嘗試瀏覽概述頁面底部的ElementTree教程和示例 由於ElementTree是Python發行版的一部分,因此它傾向於被廣泛記錄(並易於Google搜索)。 一旦找到了它,如果需要,可以擴展一些在ElementTree中找不到的lmlx魔術。 例如,lxml維護每個元素的父關系,而ElementTree則不。 您可以將父級關系添加到ElementTree,但這不是一個簡單的示例。

那是我的學習方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM