【问题标题】:Python logging from an url into a text filePython 从 url 记录到文本文件
【发布时间】:2013-11-10 23:33:00
【问题描述】:

我正在尝试从以下 URL 站点记录文本:http://radio.nolife-radio.com:8000/played.html 成一个文本文件。我决定尝试使用 Python Logging 模块。到目前为止,我什么也没得到,我一直在这里阅读:http://docs.python.org/dev/library/logging.html 不确定我应该使用 SocketHandler 还是 HTTPHandler。我对此很陌生,仍在浏览教程。使用 Urllib 或我不知道的东西可能有一个更简单的解决方案。 URL 站点是一个广播电台,在每首曲目之后都会更新。我希望记录更新的信息。以下是目前的进展:

import logging, logging.handlers

logger = logging.getLogger('Radio Station')
logger.setLevel(logging.INFO)
fh = logging.FileHandler('thread.log')
fh.setLevel(logging.INFO)
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
fh.setFormatter(formatter)
logger.addHandler(fh)
host = 'localhost:8000'
url = 'www.radio.nolife-radio.com:8000/played.html'
http_handler = logging.handlers.HTTPHandler(host, url, method='GET')
logger.addHandler(http_handler)
logger.info("")

上面的代码目前不起作用。如果我删除 HTTP 代码,结果如下:

2013-11-11 00:22:19,640 - Radio Station - INFO -

任何帮助将不胜感激。

【问题讨论】:

  • 是否要获取 URL 并将内容写入文件?
  • 我认为这可能是术语错误的问题。Logging 更多地用于记录程序中的活动。你应该可以使用urlliburllib.urlopen("http://radio.nolife-radio.com:8000/played.html").read()
  • 那太好了。类似的,是的。
  • 如果你在 linux 上,你可以从命令行使用 curl。
  • 我使用的是 Windows 7 操作系统,我会尝试使用 urllib 看看效果如何。

标签: python url logging text handlers


【解决方案1】:

好的,这里有一个简单的例子,urllib 在 Windows 上应该没问题,你必须解决如何处理你得到的 HTML 的问题(我建议你使用 Beautiful Soup 模块来解析 HTML )。

from urllib import FancyURLopener

page_url = "http://radio.nolife-radio.com:8000/played.html"

class myUrlOpener( FancyURLopener ):
    version = "Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11"

opener = myUrlOpener()

page_contents = opener.open( page_url ).read()

print page_contents

这可能比您在 Internet 上找到的基本示例要复杂一些,因为该站点似乎不接受来自 Python urllib 用户代理的请求。在这里,通过调用FancyURLopener,我们可以将用户代理设置为Windows上的Firefox。

查看该网站 (nolife-radio.com) 关于从其网页中抓取内容的政策。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    相关资源
    最近更新 更多