使用Python Requests爬取11st网站折扣价显示原价问题求助
问题:使用Python爬取11st网站折扣价(高效方案)
我正在使用Python进行网页爬取,目标是获取11st商品页面中红色标注的折扣价。通过网站开发者工具发现,折扣价以文本形式存在于script标签中,但运行现有代码后,终端输出的却是网页显示的原价而非折扣价,希望采用Requests或其他高效方案解决(不使用Selenium,因其执行耗时)。

现有代码如下:
from bs4 import BeautifulSoup as bs4 import requests as req import json url = 'https://www.11st.co.kr/products/4976666261?NaPm=ct=ld6p5dso|ci=e5e093b328f0ae7bb7c9b67d5fd75928ea152434|tr=slsbrc|sn=17703|hk=87f5ed3e082f9a3cd79cdd0650afa9612c37d9e8&utm_term=&utm_campaign=%B3%D7%C0%CC%B9%F6pc_%B0%A1%B0%DD%BA%F1%B1%B3%B1%E2%BA%BB&utm_source=%B3%D7%C0%CC%B9%F6_PC_PCS&utm_medium=%B0%A1%B0%DD%BA%F1%B1%B3' res = req.get(url) soup = bs4(res.text,'html.parser') # json_data1=soup.find('body').find_all('script',type='text/javascript')[-4].text.split('\n')[1].split('=')[1].replace(';',"") # data=json.loads(json_data1) # print(data) json_data2=soup.find('body').find_all('script',type='text/javascript')[-4].text.split('\n') print(json_data2)
解决方案
当前代码仅拆分了script内容但未准确定位到折扣价所在的JSON字段,以下是修正后的高效方案:
修正代码
from bs4 import BeautifulSoup as bs4 import requests as req import json url = 'https://www.11st.co.kr/products/4976666261?NaPm=ct=ld6p5dso|ci=e5e093b328f0ae7bb7c9b67d5fd75928ea152434|tr=slsbrc|sn=17703|hk=87f5ed3e082f9a3cd79cdd0650afa9612c37d9e8&utm_term=&utm_campaign=%B3%D7%C0%CC%B9%F6pc_%B0%A1%B0%DD%BA%F1%B1%B3%B1%E2%BA%BB&utm_source=%B3%D7%C0%CC%B9%F6_PC_PCS&utm_medium=%B0%A1%B0%DD%BA%F1%B1%B3' # 添加请求头模拟浏览器,避免反爬拦截 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' } res = req.get(url, headers=headers) soup = bs4(res.text, 'html.parser') # 定位目标script标签并提取完整JSON数据 script_tag = soup.find('body').find_all('script', type='text/javascript')[-4] # 提取__PRELOADED_STATE__对应的JSON字符串(根据实际变量名调整) json_raw = script_tag.text.split('__PRELOADED_STATE__ = ')[1].split(';')[0] product_data = json.loads(json_raw) # 从JSON结构中定位折扣价字段(路径需根据实际数据结构调整) discount_price = product_data['product']['price']['salePrice'] print(f"折扣价: {discount_price}")
关键说明
- 请求头设置:添加
User-Agent模拟浏览器请求,避免被网站反爬机制拦截 - JSON提取准确性:直接提取完整的JSON结构,而非拆分单行内容,避免因换行或格式变化导致数据丢失
- 字段定位:通过开发者工具查看script标签内的JSON结构,找到对应折扣价的字段路径(示例中为
product.price.salePrice,需根据实际页面调整)
内容的提问来源于stack exchange,提问作者hanbit
相关产品推荐
相关产品推荐

