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

使用Python+Selenium访问Lowes产品页时遇无法访问服务器问题求助

Lowes网站Selenium访问故障排查方案

针对你用Selenium访问Lowes产品页时出现的"无法访问服务器"问题,结合反爬机制特征,给出以下修复方案:

一、隐藏Selenium自动化特征

Lowes会检测浏览器的自动化标记,需通过以下配置规避:

  • 添加Chrome参数禁用自动化控制检测
  • 通过脚本移除window.navigator.webdriver属性

二、优化浏览器配置

补充更多模拟真实浏览器的参数,减少被识别的概率:

  • 禁用不必要的扩展、弹窗拦截
  • 添加完整的请求头信息(如语言、Referer)

三、调整页面加载与等待策略

避免因页面未完全加载或操作过早导致的访问失败:

  • 使用更高效的页面加载策略
  • 用显式等待替代直接元素定位,确保元素可交互

修改后的完整代码

from selenium.webdriver import Chrome, ChromeOptions
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup
import chromedriver_autoinstaller
import time
import random

chromedriver_autoinstaller.install()

def get_product(driver: Chrome, id: int):
    driver.get(MAIN_URL.format(id))
    
    # 显式等待元素加载完成
    try:
        link_element = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, '[data-clicktype="product_tile_click"]'))
        )
        link = link_element.get_attribute('href')
        # 添加随机延迟,模拟人类操作
        time.sleep(random.uniform(1, 3))
        driver.get(link)
        
        # 等待产品页面加载
        WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.TAG_NAME, 'body'))
        )
        soup = BeautifulSoup(driver.page_source, 'lxml')
        # 后续处理逻辑...
        return soup.title.text  # 示例返回标题
    except Exception as e:
        print(f"访问失败: {str(e)}")
        return None

MAIN_URL = 'https://www.lowes.com/search?searchTerm={}&refinement=1'

options = ChromeOptions()
# 隐藏自动化特征
options.add_argument("--disable-blink-features=AutomationControlled")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
# 模拟真实浏览器参数
options.add_argument("--disable-extensions")
options.add_argument("--disable-popup-blocking")
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36")
options.add_argument("accept-language=en-US,en;q=0.9")
options.add_argument("referer=https://www.lowes.com/")

driver = Chrome(options=options)
# 移除webdriver属性
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")

products = []
product_ids = [333346]
for product_id in product_ids:
    products.append(get_product(driver, product_id))

print(products[0])
driver.quit()

额外建议

  • 切换VPN节点:如果当前IP被Lowes拉黑,尝试其他地区的IP
  • 控制请求频率:避免短时间内频繁请求,增加随机延迟范围
  • 检查VPN连接:确保VPN全程稳定,没有出现IP泄露的情况

内容的提问来源于stack exchange,提问作者Isolated Gamer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 16:02:44