【问题标题】:Saving select updating data points from an external webpage to a text file将选择的更新数据点从外部网页保存到文本文件
【发布时间】:2011-08-31 04:47:04
【问题描述】:

我正在尝试从不属于我的网站更新天气数据,并每 30 分钟将其中的一部分放入通用文本文件中。文本文件不应包含任何 html 标记或任何内容,但可以用逗号、句点或制表符分隔。生成数据的网站将数据放在一个没有类或 ID 的表中。我需要的是来自一个标签的文本以及其中的每个标签。无论更新的数据如何,标签每次都在相同的行号上。

这似乎是一个有点愚蠢的挑战,因为获取数据的方法似乎并不理想。我愿意接受有关获取更新(每小时两次)温度/露点/时间/等数据点的不同方法的建议,并将其放入文本文件中。

关于每 30 分钟左右自动化一次,我有一个自动化程序,可以在任何时间间隔下载网页。

我希望我对这个相当奇怪的(至少对我而言)挑战足够具体。我什至不知道从哪里开始。我有丰富的 html 经验和 Python、javascript、PHP 和 SQL 的基本知识,但我愿意接受代码或学习其他语言的语法。

【问题讨论】:

  • 如果您给我们一个网站链接,可能会更容易回答这个问题...

标签: php python html


【解决方案1】:

对于 Python

  • 对于 N 分钟的定时任务,创建一个定期运行 .py 脚本的 UNIX cron 作业或 Windows 等效项

  • 使用 .py 脚本中的 urllib2 模块下载天气数据

  • 使用 BeautifulSoup 或 lxml 库解析 HTML

  • 使用 XPath 选择器或 CSS 选择器 (lxml) 选择 HTML 的相关位

  • 处理数据并将其写入文本文件

实际的实现留给读者作为练习:)

【讨论】:

    【解决方案2】:

    这称为screen-scraping,但通常不受欢迎,如果您只需要天气数据,several APIs 可能是更好的解决方案,具体取决于您的具体需求。

    除此之外,我们还需要页面代码等更多细节来帮助您解决此问题。

    【讨论】:

      【解决方案3】:

      也许你可以在 cronjob 中使用它:

      $file = file_get_contents ($url);
      $onlyText = strip_tags ($file);
      $fp = fopen('data.txt', 'w');
      fwrite($fp, $onlyText);
      fclose($fp);
      

      【讨论】:

      • 除非页面不包含天气数据,否则这可能不会很有用。
      猜你喜欢
      • 1970-01-01
      • 2016-01-07
      • 2012-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多