使用lxml和xpath抓取网站后数据类型出现问题

时间:2015-03-18 19:00:07

标签: python xpath lxml

我正在抓取一个网站获取数据并最终取出数字。问题是当我尝试在Python上执行逻辑函数时,它返回的数据为

class 'lxml.etree._ElementStringResult'

我的问题是我可以将这些数据以某种方式转换为字符串或int,以便我可以编写逻辑语句吗?

以下是代码:

callType = item.xpath('.//span[contains(@id, "lblSignal")]')[0].text_content()

print callType

这是输出:

76

当我尝试对数据进行控制语句时,没有任何反应。我认为这是因为我在不正确的类型上尝试逻辑。

callType = item.xpath('.//span[contains(@id, "lblSignal")]')[0].text_content()
print type(callType)
print callType

这是我的输出:

<class 'lxml.etree._ElementStringResult'>
76

因此,不是尝试使用“int”来完成控制语句,而是使用不同的类型。我已经尝试对变量进行类型转换,但它仍保持相同的数据类型。希望这会有所帮助...

1 个答案:

答案 0 :(得分:5)

xpath()可能会返回_ElementStringResult的列表,而不是普通的Python字符串。您有时希望拥有_ElementStringResult的原因是,与str不同,他们会记住他们的父母(他们可以通过getparent方法访问)。

只需将对象传递给strint即可将其转换为字符串或整数。

for span in item.xpath('.//span[contains(@id, "lblSignal")]'):
    callType = int(span.text_content())