如何用Python Selenium遍历div提取账号的href链接与名称?
解决Selenium提取账号URL和名称的问题
你的代码每次循环都重复等待所有元素,效率偏低且没做信息提取。直接一次性获取所有目标div,再逐个提取里面的账号信息即可,具体调整如下:
修正后的代码
# 一次性获取所有目标div元素,避免循环内重复执行等待逻辑 found_elements = WebDriverWait(driver, 10).until( EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div[class*=friends_list_bl]>div")) ) # 遍历每个元素提取账号的href和名称 account_list = [] for item in found_elements: # 定位当前div下的a标签(如果a标签有特定class,可替换成更精确的CSS选择器,比如By.CSS_SELECTOR, "a.friend-link") link_tag = item.find_element(By.TAG_NAME, "a") # 获取href属性值 account_href = link_tag.get_attribute("href") # 要是href是相对路径(比如"/i.amtired"),记得拼接网站域名得到完整URL # full_url = "https://你的目标域名" + account_href # 获取账号名称文本,strip()去掉前后多余空格 account_name = link_tag.text.strip() # 将信息存入列表 account_list.append({"url": account_href, "name": account_name}) # 打印提取结果 for account in account_list: print(f"账号链接: {account['url']}, 账号名称: {account['name']}")
关键说明
- 不要在循环里重复调用
WebDriverWait,一次性获取所有元素更高效,也能避免页面动态变化导致的元素定位问题。 - 如果页面里的a标签有专属class或其他特征,把
By.TAG_NAME, "a"换成更精准的选择器,比如By.CSS_SELECTOR, "a[class*=friend-name]",能提升定位的准确性。 - 若提取的href是相对路径,记得手动拼接目标网站的域名,才能得到可直接访问的完整URL。
内容的提问来源于stack exchange,提问作者user20899166
相关产品推荐
相关产品推荐

