Python TypeError:写入分析结果时应为字符缓冲区对象
我想解析html并在读取正确的行后写入文件,例如Name:Sonda-Level:bla-blaPython TypeError:写入分析结果时应为字符缓冲区对象,python,html-parsing,Python,Html Parsing,我想解析html并在读取正确的行后写入文件,例如Name:Sonda-Level:bla-bla 但我甚至无法将其保存到文件中,因为我得到了错误:TypeError:需要字符缓冲区对象您得到错误是因为HTMLParser.feed()返回None;不能将None写入文件: import requests from HTMLParser import HTMLParser class MyHTMLParser(HTMLParser): def handle_data(self, data
但我甚至无法将其保存到文件中,因为我得到了错误:TypeError:需要字符缓冲区对象您得到错误是因为
HTMLParser.feed()
返回None
;不能将None
写入文件:
import requests
from HTMLParser import HTMLParser
class MyHTMLParser(HTMLParser):
def handle_data(self, data):
return data
def criapagina():
r = requests.get('http://shadowcores.twifysoft.net/character.php?name=Sonda+Aquatica')
fo = open('teste.txt', 'w')
fo.write(r.content)
print fo.readline
fo.close()
def lepagina():
fo = open('teste.txt', 'r+')
for line in fo:
parser = MyHTMLParser()
fo.write(parser.feed(line))
fo.close()
lepagina()
打开('/tmp/test.txt',w')。写入(无)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:应为字符缓冲区对象
否则,您尝试读取和写入teste.txt
将失败;您应该而不是将文件对象视为迭代器(表示fo中的行
),并期望能够写入文件。文件迭代器使用一个预读缓冲区,您不知道写入操作将在文件中结束
否则,你想做什么就完全不清楚了。通常,您会编写一个HTMLParser
类的自定义子类来收集实例属性中的数据。然后调用.feed()
,然后从这些属性中收集所需的内容
您最好使用一个更简单的API for HTML-like,它不需要您创建解析器子类,并且在处理简单的HTML提取任务时更易于使用。您的读写同时会失败;您没有试图控制在
teste.txt
中写入解析器结果的位置。您想做什么?此外,您是否检查了parser.feed()
返回的内容?这是肯定的,它不是一个字符串。你从来没有调用过criapagina
<代码>请求在这里根本不被使用。我以前打过电话给criapagina:P,所以我准备好了测试。TXT正如马丁所说,返回类型是none,但是你可以尝试将系统重定向到文件中,这肯定会起作用,否则建议你使用Beautiful Soup:)
>>> open('/tmp/test.txt', 'w').write(None)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: expected a character buffer object