1

テレビ キャッチアップ Web サイトから html をフェッチし、split 関数を使用して、すべての html データをチャンネル名とテーブルで現在オンになっているプログラムだけに分割するプログラムを作成しようとしています。 1 - 「プログラム名」。誰かがそれを助けることができれば、最初の分割機能の後に私が何をするかについて助けが必要です。

更新-これは学校のプロジェクトであるため、文を使用する必要があります.split関数と、誰かが私が必要とするWebサイトの次の段階の正しい方向に私を向けることができる場合、この時点から次に何をするかについて混乱しています分割するなど?

import urllib2
import string


proxy = urllib2.ProxyHandler({"http" : "http://c99.cache.e2bn.org:8084"})

opener = urllib2.build_opener(proxy)

urllib2.install_opener(opener)

tvCatchup = urllib2.urlopen('http://www.TVcatchup.com')

html = tvCatchup.read()

firstSplit = html.split('<a class="enabled" href="/watch.html?c=')[1:]
for i in firstSplit:
    print i

secondSplit = html.split ('1" title="BBC One"></a></li><li class="v-type" style="color:#6d6d6d;">')[1:]

for i in secondSplit:
    print i
4

1 に答える 1

1

これを行うには、通常、html パーサー(例についてはPython HTMLParserを参照) を使用します。( もよく使いますregex)。使用することは可能splitですが、少しハッキーです...とにかくやりました。最初にページを大きなセグメントに分割した後の次のステップは、それらをループして小さなセグメントに分割し、必要な情報に磨きをかけることです。

big_parts = html.split('href="/watch.html?c=')[1:]
for n, part in enumerate(big_parts):
    small_part = part.split('</a>')[0]
    if n % 2:       # odd numbered segments
        programme = small_part.split('"> ')[1]
        print programme
    else:           # even numbered segments
        smaller_parts = small_part.split('"')
        number = smaller_parts[0]
        channel = smaller_parts[2]
        print number, channel, ':', 

と の間のテキストを検索するhref="/watch.html?c=</a>、チャネル名とプログラム名の両方を含むすべてのセグメントが特定されるため、これが機能します。次に、識別文字シーケンス (">および") を使用してこれらのセグメントを分割し、必要な正確な情報を取得できます。Web サイトの HTML スタイルがまったく変更された場合、これはおそらく機能しなくなります。

于 2013-01-05T22:13:36.400 に答える