首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sentence.split抓取网站页面

sentence.split抓取网站页面
EN

Stack Overflow用户
提问于 2013-01-06 04:16:03
回答 1查看 120关注 0票数 1

我正在尝试创建一个从tv catchup网站获取html的节目,然后使用split函数将所有html数据拆分成频道名称和表中当前正在播放的节目,例如: BBC 1- 'program name‘。我只需要在我的第一个分裂功能后,如果有人可以帮助我做的帮助,将非常感谢。

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

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2013-01-06 06:13:36

您通常会使用html parser (有关示例,请参阅Python HTMLParser )来完成此操作。(人们也经常使用regex)。使用split是可能的,但有点老生常谈。不管怎样,我还是做了。在最初将页面拆分成大段之后,下一步是循环遍历它们,并将它们拆分为较小的段,磨练您想要的信息。

代码语言:javascript
复制
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样式,这可能会停止工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14175970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档