Python XPath 爬虫显示列表没有文本属性

1 投票
1 回答
3106 浏览
提问于 2025-04-18 23:24

我正在用一段代码从PDF中提取信息,生成一个相关的字典。我的代码在逐个访问每个文本块时是可以正常工作的,比如

x = scraperwiki.pdftoxml(u.read())
    r = lxml.etree.fromstring(x)
    s = r.xpath('//page[@number="142"]/text[@left = "134"]')
    print s[8].text 

打印s[0]、s[1]等都没问题,但当我尝试对

x = scraperwiki.pdftoxml(u.read())
    r = lxml.etree.fromstring(x)
    s = r.xpath('//page[@number="142"]/text[@left = "134"]')
    print s[0:8].text

做同样的操作时,就出现了这个错误:AttributeError: 'list' object has no attribute 'text'

有没有人能告诉我哪里出错了?

1 个回答

1

text 是每个元素的一个属性,而不是整个列表的属性。

要逐个处理每个元素。

x = scraperwiki.pdftoxml(u.read())
r = lxml.etree.fromstring(x)
s = r.xpath('//page[@number="142"]/text[@left = "134"]')
for elem in s[:8]:
    print elem.text

或者可以使用列表推导式:

x = scraperwiki.pdftoxml(u.read())
r = lxml.etree.fromstring(x)
s = r.xpath('//page[@number="142"]/text[@left = "134"]')
print [elem.text for elem in s[:8]]

撰写回答