Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python LXML-解析tr标记中的td内容_Python_Html_Python 3.x_Lxml - Fatal编程技术网

Python LXML-解析tr标记中的td内容

Python LXML-解析tr标记中的td内容,python,html,python-3.x,lxml,Python,Html,Python 3.x,Lxml,我想解析yahoo finance表中的每个统计数据,以便进行格式化-解析整个表时,格式化非常糟糕!!我目前正在使用下面的代码,我必须重复这4行内容,稍微修改一下代码,以检索表中每一行的统计信息。下面的contentB变量举例说明了这一点。我不相信这是最有效的方法。有什么建议吗 from lxml import html url = 'http://finance.yahoo.com/q/is?s=MMM+Income+Statement&annual' tree = html

我想解析yahoo finance表中的每个统计数据,以便进行格式化-解析整个表时,格式化非常糟糕!!我目前正在使用下面的代码,我必须重复这4行内容,稍微修改一下代码,以检索表中每一行的统计信息。下面的contentB变量举例说明了这一点。我不相信这是最有效的方法。有什么建议吗

from lxml import html   

url = 'http://finance.yahoo.com/q/is?s=MMM+Income+Statement&annual'

tree = html.parse(url)

contentA = tree.xpath("//table[@class='yfnc_tabledata1']/tr[1]/td/table/tr[2]/td[1]")[0].text_content().strip()
contentA1 = tree.xpath("//table[@class='yfnc_tabledata1']/tr[1]/td/table/tr[2]/td[2]")[0].text_content().strip()
contentA2 = tree.xpath("//table[@class='yfnc_tabledata1']/tr[1]/td/table/tr[2]/td[3]")[0].text_content().strip()
contentA3 = tree.xpath("//table[@class='yfnc_tabledata1']/tr[1]/td/table/tr[2]/td[4]")[0].text_content().strip()

contentB = tree.xpath("//table[@class='yfnc_tabledata1']/tr[1]/td/table/tr[3]/td[1]")[0].text_content().strip()
contentB1 = tree.xpath("//table[@class='yfnc_tabledata1']/tr[1]/td/table/tr[3]/td[2]")[0].text_content().strip()
contentB2 = tree.xpath("//table[@class='yfnc_tabledata1']/tr[1]/td/table/tr[3]/td[3]")[0].text_content().strip()
contentG3 = tree.xpath("//table[@class='yfnc_tabledata1']/tr[1]/td/table/tr[3]/td[4]")[0].text_content().strip()

使用
范围
格式

for i in range(1,5):
    contentA = tree.xpath("//table[@class='yfnc_tabledata1']/tr[1]/td/table/tr[2]/td[{i}]".format(i=i))[0].text_content().strip()
    print(contentA)
输出

Total Revenue
31,821,000
30,871,000
29,904,000
Cost of Revenue
16,447,000
16,106,000
15,685,000

输出

Total Revenue
31,821,000
30,871,000
29,904,000
Cost of Revenue
16,447,000
16,106,000
15,685,000
编辑


如何自由格式化返回的每个变量?例如,我想要一本总收入为:“3182100”、“30871000”、“29904000”@aranfleel的字典请参见我的EDITquick问题-当您使用XPATH并使用花括号{I}时,这到底是在告诉程序什么?这是否将它定义为一个使用for循环进行迭代的列表?
{i}
xpath
无关,只是需要仔细考虑一下,现在就有意义了。。。有没有办法把返回的字符串转换成整数?