【发布时间】:2016-06-16 10:11:26
【问题描述】:
我是硒的新手。搜索一个网站,我每页得到 10 个结果。这些结果在页面上显示为列表(li 标签),每个列表都包含相同的属性。当满足我的条件时,我会转到另一个相关网页并获取所需的内容。但是,当我的代码不断循环列表时,它无法为其他列表找到相同的属性。这是我的代码:
p_url = "https://www.linkedin.com/vsearch/f?keywords=BARCO%2BNV%2Bkortrijk&pt=people&page_num=5"
driver.get(p_url)
time.sleep(5)
results = driver.find_element_by_id("results-container")
employees = results.find_elements_by_tag_name('li')
#emp_list = []
#for i in range(len(employees)):
# emp_list.append(employees[i])
for emp in employees:
try:
main_emp = emp.find_element_by_css_selector("a.title.main-headline")
name = emp.find_element_by_css_selector("a.title.main-headline").text
href = main_emp.get_attribute("href")
if name != "LinkedIn Member":
location = emp.find_element_by_class_name("demographic").text
href = main_emp.get_attribute("href")
print(href)
print(location)
driver.get(href)
exp = driver.find_element_by_id("background-experience")
amkk = exp.find_elements_by_class_name("editable-item")
for amk in amkk:
him = amk.find_element_by_tag_name("header").text
him2 = amk.find_element_by_class_name("experience-date-locale").text
if '\n' in him:
a = him.split('\n')
print(a[0])
print(a[1])
print(him2)
except Exception as exc:
print(exc)
continue
在此代码中,main_emp = emp.find_element_by_css_selector("a.title.main-headline") 行在第一次工作后停止工作。结果我得到了Message: stale element reference: element is not attached to the page document的错误
从 stackoverflow 问题中,我看到有人说内容已从 DOM 结构中删除,而另一篇帖子中有人建议用结果填充列表。这是我尝试过的emp_list = []
for i in range(len(employees)):
emp_list.append(employees[i]),但是也没有成功。
我该如何克服这个问题?
【问题讨论】:
-
你能分享你正在使用的 HTML 吗?我刚刚检查了您访问的页面,当我访问
results-containerdiv时,没有一个li是该元素的直接子元素,但您说它适用于第一个员工。
标签: python-3.x selenium