You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Selenium爬取电商标题不使用.get_attribute()的方法

无需调用.get_attribute()的标题提取方案

以下是两种可直接落地的实现路径,完全规避你提到的方法调用:

  • 方案1:执行原生JavaScript读取DOM属性
    直接通过Selenium的脚本执行能力,在浏览器页面上下文里用原生JS读取元素属性,全程不调用WebElement封装的.get_attribute()方法,属性读取逻辑和浏览器原生行为完全一致,准确率最高。
    核心替换代码如下:

    from selenium.webdriver.chrome.service import Service
    from webdriver_manager.chrome import ChromeDriverManager
    from selenium import webdriver
    import pandas as pd
    
    # 把driver初始化放到循环外,避免每开一页就启动一次浏览器,提升效率
    driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
    title_list=[]
    price_list=[]
    description_list = []
    rating_list = []
    rating_star_list = []
    
    for page in range(1,3):
        # 修复原代码分页拼接错误,原逻辑会生成错误的带参地址
        website = f'https://www.skroutz.gr/c/40/kinhta-thlefwna.html?from=families&page={page}'
        driver.get(website)
        titles = driver.find_elements("class name",'js-sku-link') 
        for title in titles:
            # 用JS直接读取元素title属性,替代get_attribute调用
            title_val = driver.execute_script('return arguments[0].title', title)
            title_list.append(title_val)
    
  • 方案2:直接解析页面源代码提取属性
    拿到页面完整HTML源码后,用HTML解析库直接提取目标标签的属性,全程不需要依赖Selenium的元素属性接口,解析速度比逐元素读取更快。需要提前安装beautifulsoup4和lxml依赖。
    核心实现代码:

    from bs4 import BeautifulSoup
    
    # 在driver.get(website)等待页面加载完成后,直接取源码解析
    driver.get(website)
    soup = BeautifulSoup(driver.page_source, 'lxml')
    # 直接通过CSS选择器找所有目标标签,读取title属性
    page_titles = [item['title'] for item in soup.select('a.js-sku-link')]
    title_list.extend(page_titles)
    

补充:如果确认目标站点.js-sku-link标签的可见文本和title属性内容完全一致,也可以直接用title.text读取元素可见文本来获取标题,这个是Selenium对元素渲染文本的封装属性,不属于.get_attribute()调用,但要注意部分商品标题过长被CSS截断时,拿到的文本会不完整,优先选用前两种方案更稳妥。

内容的提问来源于stack exchange,提问作者Lefteris Kyprianou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 06:06:29