【发布时间】:2017-03-17 21:30:53
【问题描述】:
使用 selenium 时获得 text 和 innerHTML 有什么区别。即使我们在特定元素下有文本,但当我们执行.text 时,我们会得到空值。但是.get_attribute("innerHTML") 工作正常。
有人能指出两者之间的区别吗?什么时候有人应该使用 '.get_attribute("innerHTML")' 而不是 .text?
【问题讨论】:
-
"innerHTML" 将返回此元素的内部 HTML,其中包含其中的所有 HTML 标签,包括文本和标签,如“
<p>This is demo</p>"”,而 .text 只会检索其后代的所有文本内容,而没有任何HTML tags.example: "这是演示" -
我可以理解这一点....但有时....当您执行以下
driver.find_element_by_css_selector("p").text时将一无所获。但是做 driver.find_element_by_css_selector("p").get_attribute("innerHTML") 会导致提取This is demo....为什么会这样? -
问题可能出在您的选择器上...当您使用 driver.find_element_by_css_selector("p").text ....如果您可以分享您正在尝试的网页的网址...我可以更好地解释事情
-
"http://www.costco.com/Weatherproof%C2%AE-Men's-Ultra-Tech-Jacket.product.100106552.html"尝试使用以下行获取产品标题driver.find_element_by_css_selector("h1[itemprop='name']").text没有产生任何结果....但是 driver.find_element_by_css_selector("h1[itemprop='name']").get_attribute("innerHTML" ) 得到产品标题"Weatherproof\xae Men's Ultra Tech Jacket" -
我用详细信息更新了评论...在添加更多详细信息之前我错误地按下了回车...我的错误
标签: python selenium web-scraping properties attributes