python - 使用 Python Selenium 打印出列表中的某些元素
问题描述
我正在尝试使用 Python 和 Selenium 为 Linkedin 构建一个网络爬虫。我试图打印出标题,但输出只显示一个空列表,我不知道为什么。我尝试打印列表中的所有元素并使用 items.text.replace() 替换常见输出,但是,输出仍然是所有元素。我也尝试过打印父 div,但输出仍然是一个空列表。
这是我写的代码:
#search
driver.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 count
resultCount = driver.find_element_by_xpath("//*[@id='ember64']/div/h3")
print("\n" + str(resultCount.text))
#printing
results = 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 url
url = 'https://www.linkedin.com/search/results/people/?keywords=Steve%20Jobs&origin=GLOBAL_SEARCH_HEADER'
driver.get(url)
# print job title
results = 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
解决方案
试试这个 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')]
Contains() 在 xpath 中用于找出带有部分文本的 web 元素。并且显式等待可以用于我在上面使用过的许多条件。在查找任何 web 元素之前使用 wait 是一种很好的做法。硒等待参考https://selenium-python.readthedocs.io/waits.html xpath 函数的更多详细信息-https://docs.oracle.com/cd/E35413_01/doc.722/e35419/dev_xpath_functions.htm#autoId12 Xpath向我显示所有列表:
推荐阅读
- haproxy - 从 HAProxy 中的 Referer Header 字段中提取参数
- mongodb - 如何使用更新查询添加 $or 条件?
- android - 如何在不更新版本的情况下更改应用程序的内容?
- eclipse - 我要采取什么 Egit 操作将 src 文件 TESTGIT1 从 MainServerRepository 复制到 LocalServerRepo 以进行处理?
- android - 在屏幕解锁时更新小部件
- android - Firebase ML 套件给出 FirebaseMLException: Waiting for the text recognition model to be download。请稍等
- sql - NULL 值的 where 子句中的 SQL Switch/Case
- angular - 在 ionic 中动态更改背景项目(来自 json 服务器的数据)
- bash - 使用 sed 替换多个文件中的同一文本行
- flutter - Flutter 不能用 vscode 运行但可以用 xcode 运行