|
发表于 2024-7-14 10:26:46
|
显示全部楼层
明白了,如果所有的标题都在 `li` 标签内部,但是第一个标题是在 `li` 之外,那么我们可以稍作调整来处理这种情况。假设第一个标题是在 `li` 之外,而其余标题在 `li` 内,我们可以分别处理这两种情况。
### 方案一:处理所有标题都在 `li` 内的情况
- from selenium import webdriver
- from selenium.webdriver.common.by import By
- driver = webdriver.Chrome()
- driver.get("http://your-website-url.com")
- # 读取课程
- lis = driver.find_elements(By.CSS_SELECTOR, '.full>li')
- # 遍历数组
- for li in lis:
- # 获得id
- original_string = li.get_attribute('id')
- if not original_string:
- continue
-
- # 去除前12位和后1位的字符(这个理解有点模糊,需要根据具体情况处理)
- formatted_string = original_string
-
- # 构建URL
- url = f'http://your-website-url.com/#/train-new/class-detail/{formatted_string}'
-
- # 获取标题(假设标题在一个h3标签内)
- title_element = li.find_element(By.TAG_NAME, 'h3')
- title = title_element.text
-
- print(f"Title: {title}, URL: {url}")
-
- driver.quit()
复制代码
### 方案二:处理第一个标题在 `li` 外,其余标题在 `li` 内的情况
- from selenium import webdriver
- from selenium.webdriver.common.by import By
- driver = webdriver.Chrome()
- driver.get("http://your-website-url.com")
- # 找到第一个标题
- first_title_element = driver.find_element(By.XPATH, '//h3[contains(text(), "培训班1")]')
- first_title = first_title_element.text.strip() # 假设标题在h3标签内
- print(f"Title: {first_title}, URL: http://your-website-url.com/#/train-new/class-detail/first_id")
- # 读取课程
- lis = driver.find_elements(By.CSS_SELECTOR, '.full>li')
- # 遍历数组(从第二个开始)
- for li in lis[1:]:
- # 获得id
- original_string = li.get_attribute('id')
- if not original_string:
- continue
-
- # 去除前12位和后1位的字符(这个理解有点模糊,需要根据具体情况处理)
- formatted_string = original_string
-
- # 构建URL
- url = f'http://your-website-url.com/#/train-new/class-detail/{formatted_string}'
-
- # 获取标题(假设标题在一个h3标签内)
- title_element = li.find_element(By.TAG_NAME, 'h3')
- title = title_element.text
-
- print(f"Title: {title}, URL: {url}")
-
- driver.quit()
复制代码
在方案二中,我们先单独处理第一个标题,然后再处理剩余的 `li` 标签内的标题。这样就能灵活应对不同的页面结构了。记得根据实际情况调整代码中的具体元素和选择器。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|