如何删除使用Selenium爬取网页元素数据时产生的冗余空格
Selenium爬取内容冗余空格解决方案
方案1:直接清洗提取到的原始文本
你拿到的文本带大量冗余空格/空行,是因为原网页HTML结构中自带大量缩进、换行占位,Selenium提取text时会保留这些原始空白字符,对拿到的元素文本逐行去除首尾空白、过滤空行即可得到干净内容,修改后的代码如下:
from selenium import webdriver driver = webdriver.Safari() driver.get("https://iayosb.com/firmalar/anadolu-kompozit-mam-san-ve-tic-a-s/") article = driver.find_elements_by_xpath("//div[@class='w2dc-fields-group w2dc-fields-group-1']") for elem in article: # 逐行处理文本:去除每行首尾空白、过滤空行 clean_lines = [line.strip() for line in elem.text.splitlines() if line.strip()] for line in clean_lines: print(line) driver.quit()
处理后输出效果:
Telefon: 216 593 17 20 - 21 - 22 Websitesi: http://www.an-ko.com Email: info@anadolukompozit.com
方案2:精准定位字段获取结构化数据
不需要提取整个分组的全部文本,直接定位每个字段的标签和内容,直接拿到无冗余的结构化数据,后续使用更方便:
from selenium import webdriver driver = webdriver.Safari() driver.get("https://iayosb.com/firmalar/anadolu-kompozit-mam-san-ve-tic-a-s/") # 直接定位每个字段容器 fields = driver.find_elements_by_xpath("//div[@class='w2dc-fields-group w2dc-fields-group-1']//div[contains(@class,'w2dc-field')]") for field in fields: # 分别提取字段名和字段值,自动去空白 label = field.find_element_by_xpath(".//label").text.strip() value = field.find_element_by_xpath(".//div[@class='w2dc-field-content']").text.strip() print(f"{label} {value}") driver.quit()
补充说明
如果你使用的是Selenium 4及以上版本,find_elements_by_xpath 等写法已被弃用,需要改用以下写法:
# 先导入By类 from selenium.webdriver.common.by import By # 定位元素写法替换 article = driver.find_elements(By.XPATH, "//div[@class='w2dc-fields-group w2dc-fields-group-1']")
内容的提问来源于stack exchange,提问作者Kiddanube4
相关产品推荐
相关产品推荐

