2024-09-30 20:39:05 发布
网友
我有这个html:
<td class="name-td alLeft bordR">13.10.2016, Thu<span class="sp">|</span>17:00</td>
我想要一个日期(13.10.2016)和一个时间(17:00)。在
我在做:
但是有一个错误
IndexError: list index out of range
我想这是因为我在a标记中有一个html标记
a
你能帮帮我吗?在
问题在于检查bordR类的方式。class是一个以空格分隔的多值属性,您必须考虑元素上的其他类。在XPath中,应该使用“contains”:
bordR
class
.//td[contains(@class, 'bordR')]
或者,更可靠的是add "concat" to the partial match check。在
找到元素后,可以使用.text_content()方法获取包含所有子元素的完整文本:
.text_content()
要进一步,您可以load the date string into a ^{} object:
In [5]: from datetime import datetime In [6]: datetime.strptime(td.text_content(), "%d.%m.%Y, %a|%H:%M") Out[6]: datetime.datetime(2016, 10, 13, 17, 0)
有一个名为^{}的方法:
Iterates over the text content of a subtree.
因此,如果变量td中有一个元素td,可以这样做:
td
>>> text = list(td.itertext()); text ['13.10.2016, Thu', '|', '17:00'] >>> date, time = text[0].split(',')[0], text[-1] >>> datetime_text = '{} at {}'.format(date, time) >>> datetime_text '13.10.2016 at 17:00'
问题在于检查
bordR
类的方式。class
是一个以空格分隔的多值属性,您必须考虑元素上的其他类。在XPath中,应该使用“contains”:或者,更可靠的是add "concat" to the partial match check。在
找到元素后,可以使用
^{pr2}$.text_content()
方法获取包含所有子元素的完整文本:要进一步,您可以load the date string into a ^{} object :
有一个名为^{} 的方法:
因此,如果变量
td
中有一个元素td
,可以这样做:相关问题 更多 >
编程相关推荐