为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Python Selenium 打印列表中的某些元素

使用 Python Selenium 打印列表中的某些元素

繁花如伊 2023-06-27 16:17:24
我正在尝试使用 Python 和 Selenium 为 Linkedin 构建一个网络爬虫。我正在尝试打印标题,但输出仅显示一个空列表,我不知道为什么。我尝试打印列表中的所有元素并使用 items.text.replace() 替换常见输出,但是,输出仍然是所有元素。我也尝试过打印父 div,但输出仍然是一个空列表。这是我写的代码:#searchdriver.find_element_by_xpath("//*[@id='ember16']/input").send_keys("Steve Jobs")driver.find_element_by_xpath("//*[@id='ember16']/input").send_keys(Keys.RETURN)driver.implicitly_wait(3)#result countresultCount = driver.find_element_by_xpath("//*[@id='ember64']/div/h3")print("\n" + str(resultCount.text))#printingresults = driver.find_elements_by_xpath('//*[@id="ember64"]/div/ul')for items in results:    print(str(driver.find_elements_by_xpath('//*[@id="ember552"]/div/div[2]/p[1]'))+"\n")这是输出:About 43,000 results[]Process finished with exit code 0无论如何,在迭代列表时是否可以指定要打印的元素?编辑:这是此代码的最小可重现示例:# search urlurl = 'https://www.linkedin.com/search/results/people/?keywords=Steve%20Jobs&origin=GLOBAL_SEARCH_HEADER'driver.get(url)# print job titleresults = driver.find_elements_by_xpath('//*[@id="ember64"]/div/ul')for items in results:    print(driver.find_elements_by_xpath('//*[@id="ember552"]/div/div[2]/p[1]')) 这是输出:[]Process finished with exit code 0
查看完整描述

1 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

试试这个 xpath:

results = WebDriverWait(driver, 10).until(
    EC.presence_of_all_elements_located((By.XPATH,"//*[contains(@class,'search-results__list list-style-none')]/li")))

对于标题,您可以使用下面的 xpath 以及 gettext()

//*[contains(@class,'subline-level-1 t-14')]

xpath 中使用 Contains() 来查找包含部分文本的 Web 元素。显式等待可以在许多条件下使用,我在上面使用了其中之一。在查找任何 Web 元素之前使用 wait 是一种很好的做法。

向我显示所有列表:

//img1.sycdn.imooc.com/649a9b44000127a506520495.jpg

查看完整回答
反对 回复 2023-06-27
  • 1 回答
  • 0 关注
  • 270 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信