使用BeautifulSoup爬取Zara商品价格失败,求解决方法
Zara土耳其站点男士西装外套价格爬取问题解决
问题根源
- 请求头非法:你的
HEADERS中User-Agent字段包含多余的your text占位符,导致请求头不符合标准浏览器格式,网站可能限制了这类请求的返回内容。 - 动态数据渲染:Zara商品列表的价格是通过JavaScript动态加载的,直接爬取静态HTML无法获取到目标数据。
解决步骤
步骤1:修复请求头
移除User-Agent里的无效内容,确保请求头模拟正常浏览器。
步骤2:调用后端数据接口
Zara页面加载时会通过API接口返回商品的JSON格式数据,直接请求该接口能更可靠地获取价格信息,无需解析动态渲染的HTML。
修正后的代码
import requests # 修正后的标准请求头 HEADERS = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36", "Accept-Language": "tr-TR,tr;q=0.9,en-US;q=0.8,en;q=0.7" } # 直接请求Zara商品数据接口,参数对应土耳其站点的男士西装外套分类 api_url = "https://www.zara.com/tr/tr/api/v1/products?categoryIds=608&limit=24&offset=0&sort=popularity&locale=tr_TR&storeId=193" response = requests.get(api_url, headers=HEADERS) data = response.json() # 遍历提取商品名称与价格 for product in data['products']: product_name = product['name'] current_price = product['price']['current'] print(f"{product_name}: {current_price} TRY")
补充说明
- 接口参数中
categoryIds=608对应男士西装外套分类,storeId=193对应土耳其站点,这些参数可从原页面的网络请求记录中获取。 - 若需加载更多商品,可调整
offset参数(如offset=24获取第25-48个商品)。
内容的提问来源于stack exchange,提问作者Erdem Kabadayı
相关产品推荐
相关产品推荐

