sentence.split抓取网站页面

时间:2013-01-05 20:16:03

标签: python html

我正在尝试创建一个从tv catchup网站获取html的程序,然后使用split函数将所有html数据拆分为通道名称和当前在表中的程序,例如as: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

1 个答案:

答案 0 :(得分:1)

您通常会使用html parser(请参阅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风格,这可能会停止工作。

相关问题