Python Selenium如何按出现顺序匹配提取的Name与对应URL
解决方法
你不需要分开提取名称和URL,改为先定位所有条目根容器(class为middle的div),逐个遍历每个容器提取对应数据,就能天然保持顺序对应,无URL的位置自动填充空值即可。
修正后代码
# 定位所有20条条目对应的根容器 entry_list = driver.find_elements_by_xpath("//div[@class='middle']") name_list = [] url_list = [] for entry in entry_list: # 提取当前条目的名称 current_name = entry.find_element_by_xpath("./h5/p").text name_list.append(current_name) # 尝试提取当前条目的URL,不存在则赋值为空 try: current_url = entry.find_element_by_xpath("./h5/p/a").get_attribute("href") except: current_url = "" url_list.append(current_url)
逻辑说明
- 最终得到的
name_list和url_list长度均为20,相同下标位置的元素一一对应,比如排序第10位的名称对应name_list[9],对应的URL就是url_list[9],直接通过下标即可匹配关联关系。 - 如果你需要直接存储配对结果,可以直接生成结构化的列表,不需要单独维护两个列表:
result = [] for entry in entry_list: current_name = entry.find_element_by_xpath("./h5/p").text try: current_url = entry.find_element_by_xpath("./h5/p/a").get_attribute("href") except: current_url = "" result.append({ "name": current_name, "url": current_url })
内容的提问来源于stack exchange,提问作者laosnd
相关产品推荐
相关产品推荐

