从网站获取文本并将其显示回来

时间:2011-10-20 00:21:07

标签: python screen-scraping

目前,有一个游戏有不同的群体,你可以每小时玩一个奖金'金'。有时候有金子,有时却没有。它每小时都会在facebook上发布'group2中的黄金'或'group6'中的黄金,而其他时间由于没有黄金作为该小时的奖品而没有帖子。我想写一个小脚本,每小时检查一次网站并获取结果(如果有黄金或没有黄金,以及哪个组)并将其显示给我。因为我正在学习它,所以我想在python中编写它。这会是最好用的语言吗?我该怎么做呢?我真正能找到的是有关提取链接的信息。我不想提取链接,只提取文本。感谢您的帮助。我很感激。

2 个答案:

答案 0 :(得分:1)

查看urllib2以获取来自网址的html和BeautifulSoup / HTMLParser /等来解析html。然后,你可以使用这样的东西作为脚本的起点:

import time
import urllib2
import BeautifulSoup
import HTMLParser

def getSource(url, postdata):
    source = ""
    req = urllib2.Request(url, postdata)
    try:
        sock = urllib2.urlopen(req)
    except urllib2.URLError, exc:
        # handle the error..
        pass
    else:
        source = sock.read()
    finally:
        try:
            sock.close()
        except:
            pass
    return source

def parseSource(source):
    pass
    # parse source with BeautifulSoup/HTMLParser, or  here...

def main():
    last_run = 0
    while True:
        t1 = time.time()
        # check if 1 hour has passed since last_run
        if t1 - last_run >= 3600:
            source = getSource("someurl.com", "user=me&blah=foo")
            last_run = time.time()
            parseSource(source)
        else:
            # sleep for 60 seconds and check time again.
            time.sleep(60)
     return 0

if __name__ == "__main__":
    sys.exit(main())

这是一篇关于parsing-html-with-python

的好文章

答案 1 :(得分:1)

我有类似于你所拥有的东西,但你遗漏了我的主要问题。我查看了htmlparser和bs,但我不确定如何做if if($ posttext == gold)echo“gold in so so so so so so so”...似乎bs与标签交易很多..我想因为facebook帖子可以使用各种标签,我将如何只搜索文本并返回“帖子”?