例如,我需要从http://gmail.com/获取免费存储空间的数量:
Over <span id=quota>2757.272164</span> megabytes (and counting) of free storage.
然后将这些数字存储在MySql数据库中。 正如您所见,这个数字是动态变化的。
有没有办法可以设置服务器端脚本,每次更改时都会抓取该数字,并将其保存到数据库中?
感谢。
答案 0 :(得分:3)
由于Gmail不提供任何API来获取此信息,因此听起来您想要执行一些web scraping。
Web抓取(也称为Web 收获或Web数据提取)是 计算机软件技术 从网站提取信息
有许多方法可以做到这一点,如之前链接的维基百科文章所述:
人类复制和粘贴:有时甚至 最好的网络抓取技术可以 不能取代人工的人工检查 和复制粘贴,有时这个 可能是唯一可行的解决方案 明确抓取的网站 设置障碍以防止机器 自动化。
文本grepping和正则表达式 匹配:简单而强大 从中提取信息的方法 网页可以基于UNIX grep命令或正则表达式 编程的匹配设施 语言(例如Perl或 Python)的
HTTP编程:静态和动态 可以通过发布来检索网页 对远程Web服务器的HTTP请求 使用套接字编程。
DOM解析:通过嵌入 完整的Web浏览器,如 Internet Explorer或Mozilla Web 浏览器控制,程序可以检索 由...生成的动态内容 客户端脚本。这些Web浏览器 控件还将网页解析为 DOM树,基于哪些程序可以 检索部分网页。
HTML解析器:一些半结构化的 数据查询语言,例如XML 查询语言(XQL)和 超文本查询语言(HTQL),可以 用于解析HTML页面和 检索和转换Web内容。
网络抓取软件:有很多 网络抓取软件可用 可用于自定义Web抓取 解决方案。这些软件可能会提供 删除的Web录制界面 手动编写的必要性 网络抓取代码,或一些脚本 可用于提取的函数 并转换Web内容,以及 可以存储的数据库接口 在本地数据库中删除数据。语义标注识别: 网页可能包含元数据或 可以的语义标记/注释 用于定位特定数据 片段。如果注释是 嵌入在页面中,作为Microformat 是的,这种技术可以被视为 DOM解析的一个特例。在 另一个案例,注释, 组织成语义层2, 存储和管理分开 网页,所以网络刮板可以 检索数据模式和指令 从刮擦之前的这一层 页。
在我继续之前,请记住所有这些legal implications。我不知道它是否符合gmail的条款,我建议在继续之前检查它们。您最终可能会被列入黑名单或遇到其他问题。
所有这一切,我会说在你的情况下你需要某种蜘蛛和DOM解析器来登录gmail并找到你想要的数据。此工具的选择取决于您的技术堆栈。
答案 1 :(得分:1)
最初,我认为不可能认为该号码是由javascript初始化的。
但是如果关闭javascript,数字就会出现在span标记中,并且javascript函数可能会定期增加它。
因此,您可以使用curl,fopen等从URL中读取内容,然后您可以解析查找此值的内容以将其存储在数据库中。并设置一个cron工作来定期完成。
有很多关于如何做到这一点的参考资料。包括SO。如果你遇到困难,那就打开另一个问题。
警告:Google有办法查明他们的应用是否被删除,他们会在一段时间内阻止您的IP。阅读谷歌小字。它发生在我身上。
答案 2 :(得分:0)
我可以看到你这样做的一种方式(可能不是最有效的方法)是使用PHP和YQL(来自Yahoo!)。使用YQL,您可以指定网页(www.gmail.com)和XPATH以获取span标记内的值。它本质上是网络抓取,但YQL为您提供了一个很好的方法,可以使用4-5行代码。
你可以将整个事物包装在一个每隔x秒被调用的函数中,或者你正在寻找的任何时间段。
答案 3 :(得分:0)
除了这个特殊情况下的合法性问题,我建议如下:
尝试攻击不可能发生的事情,停下来思考不可能性来自哪里,以及你是否选择了正确的方式。
你真的认为他脑子里的某个人会发出一个新的http
连接,或者甚至更糟糕的是保持一个开放的comet
连接来查看公共存储是否已经增长?对于一个无用的用户?只需查看并找到一个根据某个初始值和当前时间计算值的函数。