как вытащить стоимость доставки с banggood.com с помощью Beautifulsoup - PullRequest
0 голосов
/ 24 октября 2019

Я пытаюсь получить стоимость доставки по этой ссылке: 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

, но кажется, что "сильный" пуст. Я пробовал несколько решений, но все они дали мне пустое «сильное», я использую beautifulsoup в Python 3. Например, этот код привел меня к пустому «сильному»:

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 голосов
/ 24 октября 2019

Используя 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>
0 голосов
/ 24 октября 2019

Проблема заключается в том, что «Бесплатная доставка» генерируется JavaScript после загрузки страницы, а не отправляется на веб-странице.

Может быть получена цена доставки путем выполнения HTTP-запроса после загрузки страницы. или он может быть скрыт на странице

Вы можете попытаться найти XHR-запрос на получение цены доставки, используя DevTools в Firefox или chrome, используя вкладку «сеть» и используя ее для получения цены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...