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

2024-06-26 00:08:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Python和Selenium为Linkedin构建一个web刮板。我试图打印出标题,但输出只显示一个空列表,我不知道为什么。我已经尝试打印列表中的所有元素,并使用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

Tags: divid元素列表searchbydriveritems
1条回答
网友
1楼 · 发布于 2024-06-26 00:08:13

请尝试以下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。 explict wait可以用于许多条件,我在上面使用过其中一种。在查找任何webelement之前使用wait是一种很好的做法。 有关selenium wait refhttps://selenium-python.readthedocs.io/waits.html的更多详细信息 xpath函数-https://docs.oracle.com/cd/E35413_01/doc.722/e35419/dev_xpath_functions.htm#autoId12 Xpath向我显示所有列表: enter image description here

相关问题 更多 >