1

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

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

3 に答える 3

1

出力を分割しませんが、何らかの HTML パーサーを使用します。美しいスープは良い選択です。

于 2012-12-20T10:30:34.027 に答える
0

HTML をサブストリング化するのではなく、スクリーン スクレーパーが必要なようです。優れたスクリーン スクレイピング ツールはScrapyで、XPATH を使用してデータを取得します。

Scrapyの概要ページは便利です。Web ページからデータを抽出する方法の完全な例を提供します。

于 2012-12-20T10:35:35.060 に答える
-1

urllib2 は使用しないでください。代わりにリクエストを使用して ください https://github.com/kennethreitz/requests

HTML 解析には BeautifulSoup http://www.crummy.com/software/BeautifulSoup/bs4/doc/を使用します。

注:このプロキシはダウンしているようで、プロキシ設定を削除すると機能します

import requests
from BeautifulSoup import BeautifulSoup

proxyDict = {"http":"http://c99.cache.e2bn.org:8084"}
r = requests.get("http://www.TVcatchup.com", proxies=proxyDict)

soup = BeautifulSoup(r.text)
tvs = list()

uls = soup.findAll("ul", { "class":"channels2"}
for ul in uls:
   div = ul.find("div")
   if div:
       showid = div.get("showid")
       link = ul.find("a")
       href = link.get("href")
       title = link.get("title")
       tvs.append({"showid":showid, "href":href, "title":title})
print tvs

あなたはこれを手に入れるでしょう

[{'showid': u'450263', 'href': u'/watch.html?c=1', 'title': u'BBC One'}, 
{'showid': u'450353', 'href': u'/watch.html?c=2', 'title': u'BBC Two'}, 
{'showid': u'450398', 'href': u'/watch.html?c=3', 'title': u'ITV1'}, 
{'showid': u'450521', 'href': u'/watch.html?c=4', 'title': u'Channel 4'},...
于 2012-12-20T10:30:54.573 に答える