2014-03-02 2 views
1

, пожалуйста, помогите получить цены со страниц ebay.как разобрать пробелы?

в следующем скрипте, я получаю цены с двух конкретных страниц.

import pprint 
import requests 
import lxml.etree 
import lxml.html 
import lxml.cssselect 
import re 


def get_doc(url): 
    try: 
     req = requests.get(url) 
    except Exception: 
     print('Error open. __', Exception) 
    else: 
     html = req.text 
     doc = lxml.html.document_fromstring(html) 
     return doc 


for url in ['http://www.ebay.com/itm/DW-PDP-Concept-Pearlescent-White-Maple-Drumset-/121271668104?pt=US_Drums&hash=item1c3c5acd88', 'http://www.ebay.com/itm/LOT-OF-20-DRUM-SET-TUNING-KEYS-DW-TAMA-PEARL-SABIAN-and-OTHER-UNIQUE-KEYS-/291092068092?pt=US_Drums&hash=item43c67076fc']: 
    doc = get_doc(url) 
    title = doc.xpath('//h1[@id="itemTitle"]/text()') 
    priceUSD = doc.xpath('//span[@itemprop="price"]/text()') 
    print(title, priceUSD) 

проблема заключается в том, что цена на первой странице есть место («& _n_b_s_p_;»). поэтому получает неправильный xpath value text(). она выглядит следующим образом:

[ 'DW/PDP Концепция перламутровых Белый Maple Drumset'] [ 'US $ 1 \ xa0200,00'] [ ' много 20 DRUM SET TUNING КЛЮЧИ! DW! TAMA! ЖЕМЧУЖИНА! SABIAN! и ДРУГИЕ УНИКАЛЬНЫЕ КЛЮЧИ !! '] [' US $ 6,05 ']

p.s. его не правильная цена: 'US $ 1 \ xa0200,00'

ответ

1

Заменить \xa0:

priceUSD = [t.replace('\xa0', '') for t in 
      doc.xpath('//span[@itemprop="price"]/text()')] 

BTW, я получаю следующий вывод без изменений:

['DW/PDP Concept Pearlescent White Maple Drumset'] ['US $1,200.00'] 
['LOT OF 20 DRUM SET TUNING KEYS! DW! TAMA! PEARL! SABIAN! and OTHER UNIQUE KEYS!!'] ['US $6.05'] 
+0

«// h1 [@ id = "itemTitle"]/text() '=>' // span [@ itemprop = "price"]/text() ' – Sergey

+0

@Sergey, Вы правы. Я скопировал неправильную строку из моей локальной копии. Благодарю. – falsetru

Смежные вопросы