1

如果有人能告诉我这段代码我做错了什么,我会很高兴。我有一个 HTML 并想读出成立年份 - 在这种情况下是1949。我该怎么做?请注意空格和空行。

下面是代码

<h4>  Founded in

</h4></td><td><h5> <!--10305--> 1949</h5></td></tr> <tr>

这是我正在使用的代码。并且没有打印任何内容。

myf = 'THE HTML HERE'
myf.replace("<!--10305-->", "")
year = re.findall(r"<h4>  Founded in.*? (.*?)</h5></td></tr> <tr>", myf, re.DOTALL)
print year

任何帮助,将不胜感激。

4

2 回答 2

2

lxml与 xpath 一起使用:

>>> import lxml.html
>>>
>>> root = lxml.html.fromstring('''
... <tr>
... <td>
... <h4>  Founded in
...
... </h4></td><td><h5> <!--10305--> 1949</h5></td></tr>
... ''')
>>> root.xpath('//h4[contains(text(), "Founded in")]/parent::*/following-sibling::*')[0].text_content().strip()
'1949'
于 2013-09-25T15:37:30.293 回答
0

字符串是不可变的。这个:

myf.replace("<!--10305-->", "")

返回一个值但不改变myf。你要:

myf = myf.replace("<!--10305-->", "")

此外,这段代码无论如何都会打印一些东西:

import re

myf = """\
<h4>  Founded in

</h4></td><td><h5> <!--10305--> 1949</h5></td></tr> <tr>"""

myf.replace("<!--10305-->", "")

year = re.findall(r"<h4>  Founded in.*? (.*?)</h5></td></tr> <tr>", myf, re.DOTALL)

year
#>>> ['<!--10305--> 1949']

所以真正的问题在别处。

于 2013-09-25T15:17:17.387 回答