我试图通过python和selenium从div中获取文本:
<div class="product-name">
<span class="h1" itemprop="name">TEXT</span>
</div>
我试过这个,但是,这会返回一个空字符串:
line = dr.find_element_by_class_name('product-name').find_element_by_xpath('.//span').text
提前致谢,
答案 0 :(得分:1)
您应该尝试使用css_selector
在一个查找语句中查找欲元素,如下所示: -
line = dr.find_element_by_css_selector('div.product-name > span').text
如果您仍然获得空字符串,请尝试使用get_attribute("textContent")
: -
line = dr.find_element_by_css_selector('div.product-name > span').get_attribute("textContent")
或使用get_attribute("innerHTML")
作为: -
line = dr.find_element_by_css_selector('div.product-name > span').get_attribute("innerHTML")
注意: - 如果只有希望的文字为: -
,您还可以使用上述操作使用<div>
在父class_name
元素上获取innerText
line = dr.find_element_by_class_name('product-name').text
或者
line = dr.find_element_by_class_name('product-name').get_attribute("textContent")
答案 1 :(得分:0)
我发现bs4更直观,或许这会更好吗?
from bs4 import BeautifulSoup as bs4
def main():
html = """<div class="product-name">
<span class="h1" itemprop="name">TEXT</span>
</div>"""
soup = bs4(html, "html.parser")
print(soup.find_all('div', {"class": "product-name"}))
if __name__ == '__main__':
main()
关于你的代码..
line = dr.find_element_by_class_name('product-name').find_element_by_xpath('.//span').text
也许应该是更内联的东西:
line = dr.find_element_by_classname('product-name')
可能记得错了。