AttributeError:“list”对象没有属性“extract”?

2024-10-01 13:43:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我只想通过xpath从这个url(http://www.tuniu.com/g3300/whole-nj-0/list-l1602-h0-i-j0_0/)中提取信息。 当我运行以下代码时,出现AttributeError:'list'对象没有属性'extract'? 我的模块导入错误还是不匹配?在

# -*- coding: utf-8 -*-

import urllib2
import sys
import lxml.html as HTML
reload(sys)
sys.setdefaultencoding("utf-8")


class spider(object):
    def __init__(self):
        print u'开始爬取内容'

def getSource(self, url):
    html = urllib2.Request(url)
    pageContent = urllib2.urlopen(html,timeout=60).read()
    return pageContent

def getUrl(self, pageContent):
    htmlSource = HTML.fromstring(pageContent)
    urlInfo = htmlSource.xpath('//dd[@class="tqs"]/span/a/@href').extract()[0]
    return urlInfo


if __name__ == "__main__":
    url = "http://www.tuniu.com/g3300/whole-nj-0/list-l1602-h0-i-j0_0/"
    tuniu = spider()
    tuniu.getUrl(url)

以下是错误!在

^{pr2}$

Tags: importselfcomhttpurldefhtmlwww
2条回答

首先,使用url调用getUrl。它不获取url的内容。修改它以获取页面内容。在

并且不需要extract。要获得href,只需从返回的列表中获取一个项。在

def getUrl(self, url):
    pageContent = self.getSource(url)  # < -
    htmlSource = HTML.fromstring(pageContent)
    urlInfo = htmlSource.xpath('//dd[@class="tqs"]/span/a/@href')[0]
    return urlInfo

{1>试图提取列表中包含的标记,而不是返回列表中包含的标记。如果您只想提取第一个标记,那么您可能需要将[0]放在extract调用之前,如下所示:

urlInfo = htmlSource.xpath('//dd[@class="tqs"]/span/a/@href')[0].extract()

不清楚您想要哪个信息,但是如果第一个标记中没有包含这些信息,那么您可能需要使用for tag in urlInfourlInfo上迭代。然后tag.extract()。在

相关问题 更多 >