我正在考虑开发一个服务器会定期抓取其他网站的网站,以便为我的数据库中的某些条目收集内容。我的问题如下......
基本上,我想要做的事情是服务器执行一个脚本(比如每小时),它会查找数据库中尚未在另一个站点上爬行的所有条目。这些条目需要一定的价值,并会使用它们抓取其他网站...它可能会请求这样的网址:www.anothersite.com/images?q=entryindb
。
我想要它做的是抓取HTML,返回一个数组,并记录数据库中的值。这就是我希望抓取工具查找的内容
Find all instances of
<img> inside <a> inside <td> inside <tr> inside <tbody> inside <table> inside <div id='content'>
Return array of the img.src from all instances.
这样的事情可能吗? - 如果是的话,我该怎么做呢? - 请记住,web开发智能,到目前为止(服务器端)唯一的体验是使用PHP。
更新:我将使用基于Linux的服务器,所以我想chron-scripting是我应该怎么做的?
答案 0 :(得分:3)
从here下载phpQuery-0.9.5.386-onefile.zip
。
require_once 'phpQuery-onefile.php';
$html = file_get_contents('http://www.othersite.com');
phpQuery::newDocumentXHTML($html);
$elements = pq('#content table tbody tr td a img');
$images = array();
foreach($elements as $img){
$images[] = pq($img)->attr('src');
}
$images
数组将包含所有图像源的列表。
crawler.php
然后在cron选项卡中,如果您希望爬虫每小时运行一次,您可以执行以下操作:
0 * * * * php /path/to/your/crawler.php
答案 1 :(得分:2)
注意:请先检查您想要刮去的网站的T + C,看看他们是否允许。
答案 2 :(得分:2)
您可以使用cURL
( screenscraping )获取HTML,并使用php的DOMDocument
编写HTML解析器。如果HTML很混乱,则无法直接使用DOMDocument
来阅读,但您可以使用例如HTMLPurifier“清除它”,它会使用无效的HTML并将其全部有效。
要启动此过程,请使您的php脚本能够通过 CLI (命令行,与当然用于浏览器的网络服务器相反)运行。
获得此脚本后,设置 cronjob (如果您有Linux服务器),以便在您想要的任何时间内运行脚本。
谷歌用粗体字说。答案 3 :(得分:0)
我会用cron来做这个。但是,除非您已编写脚本,否则PHP可能不是最佳选择。 Python和BeautifulSoup可能最适合刮取URL。