首页 > 解决方案 > 如何使用 beautifulsoup 从 banggood.com 获取运费

问题描述

我正在尝试从此链接获取运费: https ://www.banggood.com/Xiaomi-Mi-Air-Laptop-2019-13_3-inch-Intel-Core-i7-8550U-8GB-RAM-512GB -PCle-SSD-Win-10-NVIDIA-GeForce-MX250-Fingerprint-Sensor-Notebook-p-1535887.html?rmmds=search&cur_warehouse=CN

但似乎“强”是空的。我尝试了一些解决方案,但所有解决方案都给了我一个空的“强”,我在 python 3 中使用了 beautifulsoup。例如,这段代码让我得到了一个空的“强”:

client = requests.get(url, headers={"User-Agent": "Mozilla/5.0"})
soup = BeautifulSoup(client.content, 'lxml')
for child in soup.find("span", class_="free_ship").children:
    print(child)

标签: pythonweb-scrapingbeautifulsoup

解决方案


使用 XHR,您可以找到该数据:

import requests
from bs4 import BeautifulSoup
import json

url = 'https://m.banggood.com/ajax/product/dynamicPro/index.html'

payload = {
'c': 'api',
'sq': 'IY38TmCNgDhATYCmIDGxYisATHA7ANn2HwX2RNwEYrcAGAVgDNxawIQFhLpFhkOCuZFFxA'}

response = requests.get(url, params=payload).json()

data = response['result']

shipping = data['shipment']
for each in shipping.items():
    print (each)

print (shipping['shipCost'])

输出:

print (shipping['shipCost'])
<b>Free Shipping</b>

推荐阅读