如何使用beautifulsoup从banggood.com获取运费

时间:2019-10-23 21:49:35

标签: python web-scraping beautifulsoup

我正在尝试通过以下链接获取运费: 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。 例如,这段代码将我引到一个空的“ strong”:

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)

2 个答案:

答案 0 :(得分:0)

问题是“免费送货”是在页面加载后由JavaScript生成的,而不是在网页中发送的。

页面加载后,它可能会通过执行HTTP请求来获得运费,或者可能隐藏在页面中

您也许可以尝试使用XHR请求,使用Firefox或chrome中的“网络”标签使用“网络”标签来获取运输价格,并以此来获取运输价格。

答案 1 :(得分:0)

使用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>