使用Selenium Python如何将提取的链接元素转为有效可访问链接?
问题:提取URL并逐个访问时出错
我需要提取页面<p>标签内的URL,将其转为可访问链接后逐个访问以提取页面数据,但运行代码时出现错误。
终端输出截图

终端错误截图

当前代码
links = [] classe = driver.find_elements(By.XPATH, "//*[@class='LinksShowcase_UrlContainer__kMj_n']/p") for i in classe: sleep(0.5) links.append(i) print(links) sleep(2) for linkAtual in links: driver.get(linkAtual)
页面情况(URL以文本形式存在于<p>标签内)



错误原因
你把WebElement元素对象直接存进了links列表,而driver.get()要求传入字符串格式的URL,不是元素对象,这就是报错的根源。
修正后的代码
links = [] # 定位所有包含URL的<p>标签 classe = driver.find_elements(By.XPATH, "//*[@class='LinksShowcase_UrlContainer__kMj_n']/p") for i in classe: sleep(0.5) # 提取<p>标签内的文本(即目标URL),去除首尾空白后加入列表 url = i.text.strip() links.append(url) print(url) sleep(2) # 遍历URL列表逐个访问 for linkAtual in links: # 校验URL格式,确保是可访问的链接 if linkAtual.startswith(('http://', 'https://')): driver.get(linkAtual) else: print(f"无效URL:{linkAtual}")
补充提示
- 如果提取到的文本缺少
http/https前缀,需要手动拼接,比如:url = f"https://{i.text.strip()}" - 尽量用
WebDriverWait显式等待替代固定时长的sleep,能提升代码的稳定性和执行效率
内容的提问来源于stack exchange,提问作者Felipe
相关产品推荐
相关产品推荐

