1

我正在尝试创建一个从 tv catchup 网站获取 html 的程序,然后使用 split 函数将所有 html 数据拆分为频道名称和当前在表中的程序,例如:BBC 1 - '程序名称'。如果有人能提供帮助,我只需要关于我在第一次拆分功能后所做的事情的帮助,我将不胜感激。

更新 - 因为这是一个学校项目,我需要使用 sentence.split 函数,如果有人能指出我需要的网站下一阶段的正确方向,我对从这一点开始接下来我会做什么感到困惑分裂等?

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但有点hacky......我还是这样做了。最初将页面拆分为大段后的下一步是循环遍历它们并将它们拆分为较小的段,以获取所需的信息。

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>恰好识别出同时包含频道名称和节目名称的所有片段。">然后,您可以使用标识字符序列 (和)分解这些段,"以获得所需的确切信息。如果网站完全改变了它的 HTML 样式,这可能会停止工作。

于 2013-01-05T22:13:36.400 回答