元组对象没有属性文本

时间:2015-09-15 19:13:30

标签: python lxml

我正在编写代码以从雅虎财经网站获取具体信息

    page = requests.get('http://finance.yahoo.com/q/pr?s=%s')
    tree=html.fromstring(page.text)
    annual_report = tree.xpath('//td[@class="yfnc_datamoddata1"]/text()')
    annual_report

其中%s是股票的名称。如果我手动输入股票的名称一切都很好。但是,如果我尝试为我创建的列表运行for循环,

    for x in my_list:
        page = requests.get('http://finance.yahoo.com/q/pr?s=%s'),(x,)
        tree=html.fromstring(page.text)
        annual_report = tree.xpath('//td[@class="yfnc_datamoddata1"]/text()')
        print annual_report

我在树线'tuple' object has no attribute 'text'

上收到错误

2 个答案:

答案 0 :(得分:1)

  

page = requests.get('http://finance.yahoo.com/q/pr?s=%s'),(x,)

这不是如何定义格式字符串。您不小心创建了一个元组('http://finance.yahoo.com/q/pr?s=%s', x)

要将x合并到字符串中,请按以下方式编写:

page = requests.get('http://finance.yahoo.com/q/pr?s=%s' % x)

甚至更好,因为不需要说明符:

  • page = requests.get('http://finance.yahoo.com/q/pr?s={0}'.format(x))

  • page = requests.get('http://finance.yahoo.com/q/pr?s=' + x)

答案 1 :(得分:1)

你的错误是:

page = requests.get('http://finance.yahoo.com/q/pr?s=%s'),(x,)

您没有格式化字符串,而是制作了' page'一个元组。 这应该有效:

page = requests.get('http://finance.yahoo.com/q/pr?s=%s' % (x,))