lxml etree.parse.xpath()返回仅包含制表符和换行符的项目

时间:2015-10-09 23:19:48

标签: python xpath lxml

对于典型的易趣搜索结果页面,例如this,我使用lxml来提取每个结果的价格:

import urllib2
from lxml import etree

url =  "http://www.ebay.com/sch/i.html?rt=nc&LH_Complete=1&_nkw=Mizuno+Pants+Baseball&LH_Sold=1&_sacat=0&LH_BIN=1&_from=R40&_sop=3&LH_ItemCondition=1000"
response = urllib2.urlopen(url)
htmlparser = etree.HTMLParser()
tree = etree.parse(response, htmlparser)
xpathselector="//span[@class ='bold bidsold']/text()"
tree.xpath(xpathselector)

虽然 50 搜索结果(以及价格),但tree.xpath(xpathselector)会返回长度 100 的列表,其中包含所有价格,但也包含除了换行符和标签之外的其他项目(忽略这些结果与网页上的价格差异 - 这是由于我的地理位置)。这是为什么?

['\n\t\t\t\t\t',
 '\n\t\t\t\t\t\t\t\t',
 '\n\t\t\t\t\t',
 u' 1\xc2\xa0049.27',
 '\n\t\t\t\t\t',
 ' 965.31',
 '\n\t\t\t\t\t',
 '\n\t\t\t\t\t\t\t\t',
 '\n\t\t\t\t\t',
 ' 883.56',
 '\n\t\t\t\t\t',
 '\n\t\t\t\t\t\t\t\t',
 '\n\t\t\t\t\t',
 '\n\t\t\t\t\t\t\t\t',
 '\n\t\t\t\t\t',
 '\n\t\t\t\t\t\t\t\t',
 '\n\t\t\t\t\t',
 ' 827.21',
 '\n\t\t\t\t\t',
 ' 827.21',
 '\n\t\t\t\t\t',
 ' 827.21',
 '\n\t\t\t\t\t',
 ' 827.21',
 '\n\t\t\t\t\t',
 ' 800.97',
 '\n\t\t\t\t\t',
 ' 799.59',
 '\n\t\t\t\t\t',
 '\n\t\t\t\t\t\t\t\t',
 '\n\t\t\t\t\t',
 '\n\t\t\t\t\t\t\t\t',
 '\n\t\t\t\t\t',
 ' 716.73',
 '\n\t\t\t\t\t',
 ' 716.73',
 '\n\t\t\t\t\t',
 ' 716.73',
 '\n\t\t\t\t\t',
 ' 690.22',
 '\n\t\t\t\t\t',
 ' 662.60',
 '\n\t\t\t\t\t',
 ' 662.60',
 '\n\t\t\t\t\t',
 ' 635.25',
 '\n\t\t\t\t\t',
 ' 606.25',
 '\n\t\t\t\t\t',
 ' 606.25',
 '\n\t\t\t\t\t',
 ' 552.39',
 '\n\t\t\t\t\t',
 ' 552.39',
 '\n\t\t\t\t\t',
 ' 552.39',
 '\n\t\t\t\t\t',
 ' 552.39',
 '\n\t\t\t\t\t',
 '\n\t\t\t\t\t\t\t\t',
 '\n\t\t\t\t\t',
 '\n\t\t\t\t\t\t\t\t',
 '\n\t\t\t\t\t',
 '\n\t\t\t\t\t\t\t\t',
 '\n\t\t\t\t\t',
 '\n\t\t\t\t\t\t\t\t',
 '\n\t\t\t\t\t',
 ' 551.01',
 '\n\t\t\t\t\t',
 ' 551.01',
 '\n\t\t\t\t\t',
 ' 517.59',
 '\n\t\t\t\t\t',
 ' 497.16',
 '\n\t\t\t\t\t',
 ' 496.88',
 '\n\t\t\t\t\t',
 ' 496.88',
 '\n\t\t\t\t\t',
 ' 496.60',
 '\n\t\t\t\t\t',
 '\n\t\t\t\t\t\t\t\t',
 '\n\t\t\t\t\t',
 ' 469.26',
 '\n\t\t\t\t\t',
 '\n\t\t\t\t\t\t\t\t',
 '\n\t\t\t\t\t',
 ' 468.15',
 '\n\t\t\t\t\t',
 ' 414.30',
 '\n\t\t\t\t\t',
 ' 414.02',
 '\n\t\t\t\t\t',
 ' 414.02',
 '\n\t\t\t\t\t',
 ' 414.02',
 '\n\t\t\t\t\t',
 ' 414.02',
 '\n\t\t\t\t\t',
 ' 386.68']

0 个答案:

没有答案