Python 我试图在删除HTML表后将数据写入csv文件

Python 我试图在删除HTML表后将数据写入csv文件,python,html,web-scraping,beautifulsoup,Python,Html,Web Scraping,Beautifulsoup,mywriter.writerow(一) csv_out.close() UnicodeEncodeError回溯(最近一次呼叫最后一次) 在() --->51 mywriter.writerow(d1) UnicodeEncodeError:“ascii”编解码器无法对位置0中的字符u'\xa0'进行编码:序号不在范围内(128) 我确实在ipython笔记本上获得了数据,但我无法确定csv文件是何时写入的 错误可能是什么??请提供帮助这是用python编写csv的一个已知问题。你可以看到

mywriter.writerow(一) csv_out.close()


UnicodeEncodeError回溯(最近一次呼叫最后一次) 在()

--->51 mywriter.writerow(d1)

UnicodeEncodeError:“ascii”编解码器无法对位置0中的字符u'\xa0'进行编码:序号不在范围内(128)


我确实在ipython笔记本上获得了数据,但我无法确定csv文件是何时写入的


错误可能是什么??请提供帮助

这是用python编写csv的一个已知问题。你可以看到一个解决方案。就你而言,一切都归结为写作:

from bs4 import BeautifulSoup
import urllib2
from lxml.html import fromstring
import re
import csv

wiki = "http://en.wikipedia.org/wiki/List_of_Test_cricket_records"
header = {'User-Agent': 'Mozilla/5.0'} #Needed to prevent 403 error on Wikipedia
req = urllib2.Request(wiki,headers=header)
page = urllib2.urlopen(req)
soup = BeautifulSoup(page)


csv_out = open("mycsv.csv",'wb')
mywriter = csv.writer(csv_out) 

def parse_rows(rows):
 results = []
 for row in rows:
     tableheaders = row.findall('th')
    if table_headers:
        results.append(headers.get_text() for headers in table_headers])

    table_data = row.find_all('td')
    if table_data:
        results.append([data.gettext() for data in table_data])
return results

# Get table
 try:
     table = soup.find_all('table')[1]
 except AttributeError as e:
     print 'No tables found, exiting'
       # return 1

  # Get rows
 try:
    rows = table.find_all('tr')
 except AttributeError as e:
    print 'No table rows found, exiting'
     #return 1

table_data = parse_rows(rows)

# Print data
for i in table_data:
    print '\t'.join(i)

或者,您可以使用库来避免这种伎俩

我尝试复制您的问题,但无法-我必须清理代码,因为缩进非常混乱,并且您试图在倒数第二行(d1)中写出的变量在任何地方都没有定义。您可以发布您实际运行的代码以产生此错误吗?可以。d1未在任何地方定义。但是我写了一行mywriter.writerow([s.encode(“utf-8”)代表I中的s]),正如Yannis P.所建议的那样,它起了作用。谢谢Yannis。在重写了您建议的方式后,它起作用了。@Maria也可以通过勾选答案来帮助其他用户。我对StackOver flow是个新手。很高兴它提供了这些功能
mywriter.writerow([s.encode("utf-8") for s in d1])