Python & BeautifulSoup 4 - Невозможно получить цены Newegg? - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь отсканировать страницы продуктов Newegg с ценами, и мне всегда кажется, что я сталкиваюсь с одной и той же проблемой - результат всегда «Нет».

Вот несколько очень простых строк кода, которые работают для подобных сайтов, таких как Amazon:

 data = requests.get('https://www.newegg.com/Product/Product.aspx?Item=N82E16824475015&cm_sp=Homepage_Dailydeal-_-P1_24-475-015-_-03042019')
 soup = BeautifulSoup(data.text, 'html.parser')
 price = soup.find('li', class_='price-current').text.strip()

Я ожидаю получить 419,99 $ в качестве результата, но вместо этого я получу None.

Когда я пытаюсь получить название продукта, я получаю желаемый результат.Это только цены, которые дают мне эту проблему.У кого-нибудь была такая же проблема и как это можно исправить?Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Мне нравится использовать библиотеку lxml, как показано ниже.С ним вы можете использовать XPATH, и это здорово.

import urllib2
from lxml import etree

url =  "URL HERE"
response = urllib2.urlopen(url)
htmlparser = etree.HTMLParser()
tree = etree.parse(response, htmlparser)
tree.xpath('//*[@id="newproductversion"]/span/strong')

Я получаю ожидаемый результат 419,99

0 голосов
/ 05 марта 2019

Вы можете использовать селектор атрибута для нацеливания на элемент, содержащий эту цену, в его атрибуте содержимого.

import requests
from bs4 import BeautifulSoup

data = requests.get('https://www.newegg.com/Product/Product.aspx?Item=N82E16824475015&cm_sp=Homepage_Dailydeal-_-P1_24-475-015-_-03042019')
soup = BeautifulSoup(data.content, 'lxml')
price = soup.select_one('[itemprop=price]')['content']
print(price)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...