运维与监控  - 讨论区

标题:Goutte, a simple PHP Web Scraper

2014年03月20日 星期四 09:39

Goutte是一个非常神奇的PHP Library,他可以模拟浏览器的行为,根据URL获取HTML数据,然后对HTML数据进行分析,可以搜索各种元素(例如button、link等),可以模拟点击链接和提交From的操作,对于经常需要抓取网站数据的同学来说,这个库太有意义了。

官方网站以及使用简洁可以参考:

https://github.com/fabpot/goutte

下面是我写的一个简单示例,用于自动化下载novafile网盘的文件,供大家参考:

<?php
require_once "goutte.phar";

$input_file=$argv[1];
if(empty($input_file)) die("need input file");

$urls=file_get_contents($input_file);
$urls=explode("\n",$urls);

use Goutte\Client;
$client = new Client();

$crawler = $client->request('GET', 'http://novafile.com/login');
$form = $crawler->selectButton('Login')->form();
$crawler = $client->submit($form, array('login' => 'your_username', 'password' => 'your_password'));


foreach($urls as $url) {
	try {
	$crawler = $client->request('GET', $url);
	$form = $crawler->selectButton('Create Download Link')->form();
	$crawler = $client->submit($form);
	$link = $crawler->selectLink('Download File')->link();
	echo $link->getUri();
	echo "\n";
	} catch (Exception $e ) {
		file_put_contents("broken.txt",$url."\n",FILE_APPEND);
	}
}

参考资料:

http://api.symfony.com/2.0/Symfony/Component/BrowserKit/Client.html

http://docs.guzzlephp.org/en/latest/

 

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号