首先,我知道有很多關於StackOverflow上的python和lxml的問題,並且我確實已經閱讀了大部分,如果不是全部的話。現在我在這個問題上尋找更全面的答案。使用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解析!
+1對於一個明確的問題。 (而不是嘗試使用正則表達式!) –