python将列名和值作为表写入单独的列中 我的代码 我的csv输出

python将列名和值作为表写入单独的列中 我的代码 我的csv输出,python,web-scraping,web-crawler,Python,Web Scraping,Web Crawler,雷诺美国公司合并Tomoka土地公司英美烟草公司 8.30%7.50%7.10%6.60%6.40%5.90%5.30%4.80%4.70%4.10% 所需输出与网站中的coulmn名称相同 参考号 而且unicode不起作用。需要帮助吗 我的新代码 首先,如果您想在每个对应的索引处组合两个列表,您应该使用zip(),当前您正在创建一个由两个列表组成的元组-res=tname,tvalue,然后按原样将其写入csv 此外,其次,您应该首先使用xpath获取表中的每一行,然后使用xpath从中获取

雷诺美国公司合并Tomoka土地公司英美烟草公司

8.30%7.50%7.10%6.60%6.40%5.90%5.30%4.80%4.70%4.10%

所需输出与网站中的coulmn名称相同 参考号

而且unicode不起作用。需要帮助吗

我的新代码
首先,如果您想在每个对应的索引处组合两个列表,您应该使用
zip()
,当前您正在创建一个由两个列表组成的元组-
res=tname,tvalue
,然后按原样将其写入csv

此外,其次,您应该首先使用xpath获取表中的每一行,然后使用xpath从中获取每个必需的
td
元素。而不是像您当前使用的那样使用两个XPath

范例-

from lxml import html
import requests
import csv

page = requests.get('http://www.wintergreenfund.com/reports/top-ten/')
tree = html.fromstring(page.text)

csvrows = []
for rows in tree.xpath('//*[@id="colLeft"]//table//tr'):
    row1text = rows.xpath('./td[1]/text()')
    row2text = rows.xpath('./td[2]/text()')
    if row1text and row2text:
        csvrows.append([row1text[0],row2text[0]])
print(csvrows)
print('Input the csv file')
csvfile = input("> ")
with open(csvfile, "w") as output:
    writer = csv.writer(output, lineterminator='\n')
    writer.writerow(['Name','Value']) #substitute as appropriate.
    writer.writerows(csvrows)

你能解释一下你得到了什么结果吗?我得到的值是[u'Nestl\xe9 SA,注册的']['5.3%],在另一列中,但我需要的值是“NestléSA,注册的5.3%”,与上述参考网站中的值相同。它的值也需要“雀巢”编码。请在此@Anand S KumarCheck上提供帮助,检查下面的答案。我使用了与下面相同的程序,我在csv文件中遇到了与上面提到的相同的错误。您是否更改了下面程序中的任何行?请提及@Anand S Kumar程序中编辑的部分。我刚刚再次检查,我对代码做了一些更改,请尝试最新的代码。最新版本保存xpath的结果,并且仅在结果为非空时添加元素。
from lxml import html
import requests
import csv

page = requests.get('http://www.wintergreenfund.com/reports/top-ten/')
tree = html.fromstring(page.text)

csvrows = []
for rows in tree.xpath('//*[@id="colLeft"]//table//tr'):
    csvrows.append([rows.xpath('./td[1]/text()'),rows.xpath('./td[2]/text()')])
print csvrows
print 'Input the csv file'
csvfile = raw_input("> ")
with open(csvfile, "w") as output:
    writer = csv.writer(output, lineterminator='\n')
    writer.writerow(['Name','Value']) #substitute as appropriate.
    writer.writerows(csvrows)
from lxml import html
import requests
import csv

page = requests.get('http://www.wintergreenfund.com/reports/top-ten/')
tree = html.fromstring(page.text)

csvrows = []
for rows in tree.xpath('//*[@id="colLeft"]//table//tr'):
    row1text = rows.xpath('./td[1]/text()')
    row2text = rows.xpath('./td[2]/text()')
    if row1text and row2text:
        csvrows.append([row1text[0],row2text[0]])
print(csvrows)
print('Input the csv file')
csvfile = input("> ")
with open(csvfile, "w") as output:
    writer = csv.writer(output, lineterminator='\n')
    writer.writerow(['Name','Value']) #substitute as appropriate.
    writer.writerows(csvrows)