当前位置: 首页 > 工具软件 > Goutte > 使用案例 >

PHP Goutte爬虫框架 设置Cookie 绕过验证界面

于正志
2023-12-01

注意:利用爬虫获取网站信息只是为了减少人工复制信息带来的工作量,本帖仅用于技术交流

Goutte 的github链接
https://github.com/FriendsOfPHP/Goutte

goutte其实挺简单的,就是新建client,request,然后通过filter获取html中的标签数组

问题和思路
但是今天遇到一个问题是,在请求一个网站时,会跳转到一个页面,要求同意cookie存储,如果不跳过这个页面就无法获取到真实信息,很明显只要在请求中加上cookie就可以绕过此页面,但是无奈找不到goutte的技术文档,起初是想通过goutte的链接点击模拟同意操作,但是该网站通过button做的跳转,我不想去动goutte的源码了,就放弃了这个想法

解决方法:
然后在网上找goutte设置cookie的方法,但是好像都是同一篇文章,利用GuzzleHttp去设置cookie,不知道是因为版本还是什么原因goutte根本找不到setClient的地方,无奈只能去读goutte的源码,我也不知道是我水平有限,没有发现更简洁的入口还是怎么滴,最终只找到一个复杂的方法如下:

$url = 'http://你的请求链接';

//初始化cookie
$cookie = \Symfony\Component\BrowserKit\Cookie::fromString('从网页复制Cookie字符串到此处');
//初始化cookiejar
$cookiejar = new \Symfony\Component\BrowserKit\CookieJar();
//将cookie设置到cookiejar中
$cookiejar->set($cookie);
//初始化client时加入cookiejar
$client = new GoutteClient(null,null,$cookiejar);
$response = $client->request('GET',$url);

通过此方法我成功的绕过了同意cookie的界面,同理,其他需要登录验证的页面也可以这么操作。

 类似资料: