【发布时间】:2018-02-07 12:38:04
【问题描述】:
我有一个这样的源文件:
<div class="l_post j_l_post l_post_bright " ...>
<div class="lzl_cnt">
...
<span class="lzl_content_main">
text1
<a class="at j_user_card" username="...">
username
</a>
text3
</span>
</div>
...
</div>
我想得到 text3,目前,我试过这个:(我在<div class="lzl_cnt">)
driver.find_element(By.XPATH,'.//span[@class="lzl_content_main"]/text()[1]')
但我得到了
"消息:无效选择器:xpath 表达式的结果 ".//span[@class="lzl_content_main"]/text()[1]" 是:[对象文本]。它 应该是一个元素”。
有没有办法获得"text3"?
我应该说得更清楚:
上面的 HTML 是更大结构的一部分,我用下面的 python 代码选择了它:
for sel in driver.find_elements_by_css_selector('div.l_post.j_l_post.l_post_bright'):
for i in sel.find_elements_by_xpath('.//div[@class="lzl_cnt"]'):
#user1 = i.find_element_by_xpath('.//a[@class="at j_user_card "]').text
try: user2 = i.find_element_by_xpath('.//span[@class="lzl_content_main"]/a[@username]').text
except: user2 = ""
text3 = ???
print(user2, text3)
【问题讨论】:
-
您能否更新您的 HTML 示例 - 它似乎已损坏
-
@Andersson 哦!对不起
-
@YoarkYANG 我已经为你添加了答案。请尝试一下,让我知道您的反馈
-
再次更新您的 HTML 示例:
a节点没有@username和"text3"不是a节点的一部分... -
@Andersson 实际上,一个节点确实有
@username,(我没有写出来,因为我认为它与具体问题无关,但是如果你们看起来很困惑,所以我会更新它们)并且text3不是节点的一部分,它是span节点的一部分:text1,text3是span节点的一部分,但它们被a node分割