一个<div>里面有两个一样的<ul>,两个<ul>的class和id也相同,我知道第二个<ul>里面的一个text,爬取第二个<ul>的全部超链接,用selenium和XPath
时间: 2023-12-06 19:05:11 浏览: 95
爬虫学习资源,有xpath爬取,beautifulsoup爬取,selenium爬取
可以使用以下代码实现:
```python
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 设置Chrome浏览器驱动的路径
driver_path = 'chromedriver.exe'
# 创建Chrome浏览器驱动
driver = webdriver.Chrome(executable_path=driver_path)
# 打开网页
driver.get('http://example.com')
# 等待第二个ul元素加载完成
wait = WebDriverWait(driver, 10)
ul_list = wait.until(EC.presence_of_all_elements_located((By.XPATH, '//div/ul')))
ul = ul_list[1]
# 获取第二个ul元素中所有的超链接
links = ul.find_elements_by_xpath('.//a')
for link in links:
href = link.get_attribute('href')
print(href)
# 关闭浏览器驱动
driver.quit()
```
解释一下代码:
1. 首先导入必要的模块和类,包括`webdriver`、`By`、`WebDriverWait`和`expected_conditions`。
2. 创建Chrome浏览器驱动。
3. 打开目标网页。
4. 使用`WebDriverWait`等待第二个ul元素加载完成。
5. 获取第二个ul元素。
6. 在第二个ul元素中查找所有的超链接。
7. 循环遍历每个超链接,获取其href属性值并打印出来。
8. 关闭Chrome浏览器驱动。
在上述代码中,XPath表达式`//div/ul`可以匹配所有的div元素下的ul元素,而`ul_list[1]`可以获取第二个ul元素。然后,使用`find_elements_by_xpath`方法查找ul元素下的所有a元素,并循环遍历每个超链接,获取其href属性值并打印出来。
阅读全文