繁体   English   中英

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

[英]Print out Certain elements in a List using 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')]

在 xpath 中使用 contains() 找出带有部分文本的 webelement。 并且显式等待可以用于我在上面使用过其中之一的许多条件。 在找到任何 webelement 之前使用等待是一种很好的做法。 selenium 等待参考的更多详细信息https://selenium-python.readthedocs.io/waits.html xpath 函数-https://docs.oracle.com/cd/E35413_01/doc.722/e35419/dev_xpath_functions.htm#autoId12 Xpath向我显示所有列表: 在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM