#python #web #web-scraping #beautifulsoup
#python #веб #веб-очистка #beautifulsoup
Вопрос:
Итак, я пытаюсь снизить цену товара на Aliexpress. Я попытался проверить элемент, который выглядит как
<span class="product-price-value" itemprop="price" data-spm-anchor-id="a2g0o.detail.1000016.i3.fe3c2b54yAsLRn">US $14.43</span>
Я пытаюсь запустить следующий код
»’
import pandas as pd
from bs4 import BeautifulSoup
from urllib.request import urlopen
import re
url = 'https://www.aliexpress.com/item/32981494236.html?spm=a2g0o.productlist.0.0.44ba26f6M32wxYamp;algo_pvid=520e41c9-ba26-4aa6-b382-4aa63d014b4bamp;algo_expid=520e41c9-ba26-4aa6-b382-4aa63d014b4b-22amp;btsid=0bb0623b16170222520893504e9ae8amp;ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_'
source = urlopen(url).read()
soup = BeautifulSoup(source, 'lxml')
soup.find('span', class_='product-price-value')
»
но я продолжаю получать пустой вывод. Должно быть, я делаю что-то не так, но эти методы, похоже, работают в учебниках, которые я видел.
Ответ №1:
Итак, что у меня получилось. Как я правильно понял, страница, которую вы предоставили, была восстановлена скриптами, но в origin она не содержит ее, только теги скриптов, поэтому я просто использовал split для ее получения. Вот мой код:
from bs4 import BeautifulSoup
import requests
url = 'https://aliexpress.ru/item/1005002281350811.html?spm=a2g0o.productlist.0.0.42d53b59T5ddTMamp;algo_pvid=f3c72fef-c5ab-44b6-902c-d7d362bcf5a5amp;algo_expid=f3c72fef-c5ab-44b6-902c-d7d362bcf5a5-1amp;btsid=0b8b035c16170960366785062e33c0amp;ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_amp;sku_id=12000019900010138'
data = requests.get(url)
soup = BeautifulSoup(data.content, features="lxml")
res = soup.findAll("script")
total_value = str(res[-3]).split("totalValue:")[1].split("}")[0].replace(""", "").replace(".", "").strip()
print(total_value)
Это работает нормально, я попробовал на нескольких страницах с Али.
Комментарии:
1. Спасибо! Я также очень ценю ваш совет по тегу script!