使用Selenium和Python将网页文本转换为数组
解决Python+Selenium提取文本并存入数组的问题
嘿,作为Python和Selenium新手,你遇到的这个问题我当初刚学的时候也碰过!用字符串存提取的文本确实容易导致内容乱糟糟的,换成列表(也就是你说的数组)就会清爽很多,而且后续处理起来也更灵活。
我帮你把代码改成用列表存储的版本,同时优化了一些细节:
# 按显示顺序返回名称列表 def gather_names(self): # 初始化一个空列表来存储名称(Python里的列表就相当于你说的数组) full_list_names = [] hover_names = self.browser.find_elements_by_xpath("//div[contains(@class, 'recent-names')]") for name_element in hover_names: # 获取元素的文本内容,去除前后多余空格 name_text = name_element.text.strip() # 只把非空的文本加入列表,避免无效内容 if name_text: full_list_names.append(name_text) return full_list_names
关键修改点说明:
- 把原来的字符串变量
fullListNames换成了空列表full_list_names,列表是Python中存储有序集合最常用的结构 - 遍历元素时,用
append()方法把每个名称添加到列表末尾,替代字符串拼接,这样每个名称都是独立的元素 - 用
strip()去除文本前后的空格和换行符,避免提取到多余的空白内容 - 增加了
if name_text的判断,过滤掉空的文本元素,保证列表里的内容都是有效的
使用示例:
调用这个方法后,你可以这样查看结果,输出会非常清晰:
# 假设你的实例是driver_instance names_list = driver_instance.gather_names() for index, name in enumerate(names_list): print(f"第{index+1}个名称:{name}")
这样输出的每个名称都会单独一行,再也不会出现混乱的拼接效果啦!
内容的提问来源于stack exchange,提问作者BBB
相关产品推荐
相关产品推荐

