使用python selenium webdriver在html页面中查找所有子元素

时间:2018-10-21 19:48:31

标签: python selenium selenium-webdriver web-scraping

我想提取div元素的所有h2元素。我使用的代码是这样的:

browser = webdriver.Chrome()
browser.get("https://www.mmorpg.com/play-now")
time.sleep(2)
item_list_new=[]
link = browser.find_element_by_xpath("//div[@class='freegamelist']")
names = link.find_element_by_tag_name('h2')
x = names.text
item_list_new.append(x)
print(item_list_new)

但是当我运行它时,我只得到div元素的第一个'h2'元素。 有人可以告诉我我做错了什么,也请以正确的方式指导我吗? 预先感谢。

3 个答案:

答案 0 :(得分:0)

您需要写names = link.find_elements_by_tag_name('h2')

您的代码应为

browser = webdriver.Chrome()
browser.get("https://www.mmorpg.com/play-now")
time.sleep(2)
item_list_new=[]
link = browser.find_element_by_xpath("//div[@class='freegamelist']")
names = link.find_elements_by_tag_name('h2')
x = names.text
item_list_new.append(x)
print(item_list_new)

find_element_by_tag_name给出第一个元素,find_elements_by_tag_name给出所有匹配的元素

答案 1 :(得分:0)

您实际上要使用听起来here几乎相似的函数find_elements_by_tag_name

答案 2 :(得分:0)

尝试获取所有标头值,如下所示:

link = browser.find_element_by_xpath("//div[@class='freegamelist']")
names = link.find_elements_by_tag_name('h2')
item_list_new = [x.text for x in names]
print(item_list_new)

或者您可以简化

names = browser.find_elements_by_xpath("//div[@class='freegamelist']//h2")
item_list_new = [x.text for x in names]
print(item_list_new)