Python Selenium 获取网页a标签href链接时报错如何解决?
问题根因
你当前定位到的元素是class="ssi-facebook"的<li>节点,而href属性是该<li>节点下子<a>节点的属性,直接对<li>节点调用get_attribute('href')无法获取到目标链接。
修复方案
方案1:直接定位到带href属性的a标签
通过CSS选择器直接定位目标元素,省去二次查找的步骤:
elems = WebDriverWait(driver, 20).until(EC.presence_of_all_elements_located( (By.CSS_SELECTOR, 'li.ssi-facebook > a'))) links = [elem.get_attribute('href') for elem in elems] print(links)
方案2:先定位li标签再查找子元素
如果需要先获取li标签做其他操作,可以先定位li,再从li下查找a标签取属性:
elems = WebDriverWait(driver, 20).until(EC.presence_of_all_elements_located( (By.CLASS_NAME, 'ssi-facebook'))) links = [] for elem in elems: # 查找li下的a标签 a_elem = elem.find_element(By.TAG_NAME, 'a') links.append(a_elem.get_attribute('href')) print(links)
兼容异常场景
如果存在部分ssi-facebook类的li下没有a标签的情况,可以增加异常捕获避免程序中断:
elems = WebDriverWait(driver, 20).until(EC.presence_of_all_elements_located( (By.CLASS_NAME, 'ssi-facebook'))) links = [] for elem in elems: try: a_elem = elem.find_element(By.TAG_NAME, 'a') links.append(a_elem.get_attribute('href')) except: # 没有找到a标签时跳过该元素 continue print(links)
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

