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

如何使用Selenium从网页中提取name、phone number等指定字段信息

代码调整方案

原有代码核心问题

  • Selenium 4.0+ 版本已废弃find_elements_by_xpath这类直接定位方法,需使用By类实现元素定位
  • 未做页面加载等待,点击跳转后直接查找元素,大概率因页面未渲染完成触发元素找不到的报错
  • 缺失标签页切换逻辑:点击列表标题会打开新的详情标签页,原代码始终停留在列表页,根本无法匹配到详情页的元素
  • 元素提取逻辑错误:find_elements返回的是WebElement对象列表,没有调用.text属性无法拿到实际文本内容
  • Windows路径转义问题:ChromeDriver路径的反斜杠未做转义处理,会触发路径识别错误
  • 缺少手机号提取逻辑,也没有提取完成后切回列表页的逻辑,最多只能爬取第一条数据

调整后可运行代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

# 用r标记原始字符串,避免Windows路径转义报错
browser = webdriver.Chrome(r"C:\Program Files (x86)\chromedriver.exe")
browser.get("https://www.houzz.com/professionals/general-contractor")
# 显式等待最长10秒
wait = WebDriverWait(browser, 10)

# 先拿到列表页的句柄,后续切回用
list_window = browser.current_window_handle

title_list = wait.until(EC.presence_of_all_elements_located((By.XPATH, '//span[@class="mlm header-5 text-unbold"]')))
for title in title_list:
    # 点击前先滚动到元素可见位置,避免点击失效
    browser.execute_script("arguments[0].scrollIntoView();", title)
    time.sleep(1)
    title.click()
    # 切换到新打开的详情页
    for handle in browser.window_handles:
        if handle != list_window:
            browser.switch_to.window(handle)
            break
    try:
        # 提取名称
        name = wait.until(EC.presence_of_element_located((By.XPATH, '//h1[contains(@class,"mwxddt-0")]'))).text
        # 提取手机号,可根据实际页面元素调整xpath
        phone = wait.until(EC.presence_of_element_located((By.XPATH, '//a[contains(@class,"phone-anchor")]'))).text
        print(f"名称:{name},手机号:{phone}")
    except Exception as e:
        print("当前条目信息提取失败:", str(e))
    finally:
        # 关闭详情页,切回列表页
        browser.close()
        browser.switch_to.window(list_window)
        time.sleep(1)

补充说明

如果运行时出现元素找不到的报错,大概率是网站更新了动态类名,你可以手动打开详情页,右键对应字段复制最新的xpath替换代码里的定位规则即可。

内容的提问来源于stack exchange,提问作者GX Mentor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:48:02