首先,我知道有很多关于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对于一个明确的问题。 (而不是尝试使用正则表达式!) –