Web sitesinde dinamik içerik kapmak ve bunu kaydetmek için?

4 Cevap php

Örneğin ben ücretsiz depolama http://gmail.com/ numarasından kapmak gerekir:

Over <span id=quota>2757.272164</span> megabytes (and counting) of free storage.

And then store those numbers in a MySql database. The number, as you can see, is dynamically changing.

I kurulum bu sayı, bu değişiklikleri her zaman kapma ve veritabanına kaydederek olacak bir server side komut olabilir bir yolu var mı?

Teşekkürler.

4 Cevap

Gmail bu bilgi almak için herhangi bir API sağlamaz beri bazı web scraping yapmak istiyorum gibi, bu sesler.

Web scraping (also called Web harvesting or Web data extraction) is a computer software technique of extracting information from websites

Önce bağlanan wikipedia makalede belirtildiği gibi, bunu yapmanın birçok yolu vardır:

Human copy-and-paste: Sometimes even the best Web-scraping technology can not replace human’s manual examination and copy-and-paste, and sometimes this may be the only workable solution when the websites for scraping explicitly setup barriers to prevent machine automation.

Text grepping and regular expression matching: A simple yet powerful approach to extract information from Web pages can be based on the UNIX grep command or regular expression matching facilities of programming languages (for instance Perl or Python).

HTTP programming: Static and dynamic Web pages can be retrieved by posting HTTP requests to the remote Web server using socket programming.

DOM parsing: By embedding a full-fledged Web browser, such as the Internet Explorer or the Mozilla Web browser control, programs can retrieve the dynamic contents generated by client side scripts. These Web browser controls also parse Web pages into a DOM tree, based on which programs can retrieve parts of the Web pages.

HTML parsers: Some semi-structured data query languages, such as the XML query language (XQL) and the hyper-text query language (HTQL), can be used to parse HTML pages and to retrieve and transform Web content.

Web-scraping software: There are many Web-scraping software available that can be used to customize Web-scraping solutions. These software may provide a Web recording interface that removes the necessity to manually write Web-scraping codes, or some scripting functions that can be used to extract and transform Web content, and database interfaces that can store the scraped data in local databases.

Semantic annotation recognizing: The Web pages may embrace metadata or semantic markups/annotations which can be made use of to locate specific data snippets. If the annotations are embedded in the pages, as Microformat does, this technique can be viewed as a special case of DOM parsing. In another case, the annotations, organized into a semantic layer2, are stored and managed separated to the Web pages, so the Web scrapers can retrieve data schema and instructions from this layer before scraping the pages.

Ben devam etmeden önce ve legal implications Tüm bu lütfen unutmayın. Bu Gmail'in şartlarına uyumlu olup olmadığını bilmiyorum ve ben ileri gitmeden önce onları kontrol öneriyoruz. Ayrıca fişleniyor sonuna kadar veya bu gibi diğer sorunlarla karşılaşabilirsiniz.

Tüm bu söyleniyor, ben sizin durumunuzda örümcek ve gmail oturum ve istediğiniz verileri bulmak için DOM parser çeşit gerektiğini söyleyebilirim. Bu aracın seçimi, teknoloji yığını bağlıdır.

Bir yakut dev olarak, Mechanize ve nokogiri kullanarak gibi. PHP kullanarak Sphider gibi çözümlere bakmak olabilir.

Başlangıçta bu sayı javascript tarafından başlatılmış olduğunu düşünerek mümkün olmadığını düşündüm.

Eğer kapatmak Ama sayı span etiketi var ve muhtemelen bir javascript fonksiyon düzenli aralıklarla o kadar artar javascript.

Yani, url içeriğini okumak vb, fopen, kıvırmak kullanabilir ve daha sonra datanase üzerinde saklamak için bu değerin arıyor içeriğini ayrıştırmak olabilir. Ve düzenli olarak bunu yapmak için bir cron işi bu kadar ayarlayabilirsiniz.

Bunun nasıl birçok referanslar vardır. SO dahil. Eğer takılıyorum sonra sadece başka bir soru açın.

Uyarı: Google kendi uygulamaları kazınır ediliyor ve zaman belirli bir süre için IP engeller olmadığını bulma yolları var. Google küçük baskı okuyun. Bu bana da oldu.

Ben (en verimli yolu olmayabilir olan) bunu yaparken görebilirsiniz bir yolu (Yahoo! itibaren) PHP ve YQL kullanmaktır. YQL ile, span etiketi içinde size değerini almak için web sayfasını (www.gmail.com) ve XPath'i belirtebilirsiniz. Bu temelde web kazıma ama YQL kod belki 4-5 hatları kullanarak bunu yapmak için güzel bir yol sağlar.

Sen her x saniye denir alır bir işlev içinde bu şeyi şal, ya da sizin için ne arıyorsanız süre.

Bu özel durumda yasallık sorunları bir kenara bırakırsak, ben şu öneririm:

Durdurmak ve imkansızlık nereden geldiğini düşünüyorum, imkansız bir şey saldırmaya çalışırken, ve doğru yolu seçti olsun.

Eğer gerçekten zihninde birisi yeni bir http bağlantı sorunu ya da daha kötüsü ortak depolama büyüdü olmadığına bakmak için açık bir comet bağlantısı yapacağını düşünüyor musunuz? Bir anonimous kullanıcı için? Sadece bakmak ve bazı init değeri ve şimdiki zamana dayalı bir değer hesaplayan bir fonksiyon bulmak.