-3
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()

html を解析してファイルに書き込み、たとえば Name: Sonda Level: bla bla などの正しい行を読み込んだ後、これをファイルに保存することさえできず、エラーが発生したため: TypeError: expected a character buffer object

4

1 に答える 1

1

HTMLParser.feed()を返すため、エラーが発生しますNone。ファイルに書き込むことはできませんNone:

>>> open('/tmp/test.txt', 'w').write(None)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: expected a character buffer object

そうしないと、読み取りと書き込みの試みteste.txtは失敗します。ファイル オブジェクトをイテレータ ( ) として扱い、ファイルへの書き込みができることを期待しないでくださいfor line in foファイル反復子は先読みバッファを使用しており、書き込みがファイルのどこで終了するかわかりません。

それ以外の場合は、何をしようとしているのか完全に不明です。通常、HTMLParserインスタンス属性でデータを収集するクラスのカスタム サブクラスを作成します。次に を呼び出し.feed()、その後、それらの属性から必要なものを収集します。

パーサー サブクラスを作成する必要がなく、単純な HTML 抽出タスクに関してははるかに使いやすい、BeautifulSoupのような HTML 用のより簡単な API を使用する方がよい場合があります。

于 2013-07-02T12:44:06.913 に答える