使用Selenium访问Hipercor链接遇权限限制,requests请求超时求解决
可行解决方案
针对访问Hipercor商品页面遇到的权限拦截和超时问题,以下是几个实用的解决方向:
1. 强化Selenium的反检测配置
仅设置User-Agent不足以绕过反爬,需要补充更多浏览器特征伪装:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() # 使用较新的合法User-Agent user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36' chrome_options.add_argument(f'user-agent={user_agent}') # 禁用自动化检测标识 chrome_options.add_argument('--disable-blink-features=AutomationControlled') # 启用隐身模式 chrome_options.add_argument('--incognito') # 禁用扩展和弹窗拦截 chrome_options.add_argument('--disable-extensions') chrome_options.add_argument('--disable-popup-blocking') # 添加适配目标站点的语言头 chrome_options.add_argument('--accept-language=es-ES,es;q=0.9') driver = webdriver.Chrome(options=chrome_options) driver.get("http://www.hipercor.es/supermercado/0110118613501925-schweppes-tonica-original-100-aromas-naturales-botella-20-cl-envase-de-vidrio/")
2. 使用代理IP
超时和权限拦截大概率是IP被目标网站封禁,更换代理可以解决:
- Selenium配置代理:
chrome_options.add_argument('--proxy-server=http://your-proxy-ip:port')
- requests配置代理:
import requests proxies = { 'http': 'http://your-proxy-ip:port', 'https': 'http://your-proxy-ip:port' } headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36' } response = requests.get("http://www.hipercor.es/supermercado/0110118613501925-schweppes-tonica-original-100-aromas-naturales-botella-20-cl-envase-de-vidrio/", headers=headers, proxies=proxies, timeout=30)
3. 模拟真实用户访问路径
不要直接请求商品页,先从网站首页进入,模拟自然的搜索、点击行为:
from selenium.webdriver.common.by import By driver.get("http://www.hipercor.es/") # 等待页面加载 driver.implicitly_wait(10) # 模拟搜索目标商品 search_box = driver.find_element(By.NAME, 'search') search_box.send_keys("schweppes tonica original 20cl") search_box.submit() # 等待搜索结果加载,点击目标商品链接 driver.implicitly_wait(10) product_link = driver.find_element(By.PARTIAL_LINK_TEXT, "Schweppes Tónica Original 100% Aromas Naturales") product_link.click()
4. 使用undetected-chromedriver
这是专门绕过反爬检测的ChromeDriver分支,无需手动配置大量参数:
from undetected_chromedriver import Chrome, ChromeOptions options = ChromeOptions() options.add_argument('--incognito') driver = Chrome(options=options) driver.get("http://www.hipercor.es/supermercado/0110118613501925-schweppes-tonica-original-100-aromas-naturales-botella-20-cl-envase-de-vidrio/")
内容的提问来源于stack exchange,提问作者Vaidas
相关产品推荐
相关产品推荐

