现在很多爬虫都会有抓取数据的需求,因此网络爬虫在一定程度上越来越火爆,其实爬虫的基本功能很简单,就是分析大量的url的html页面,从而提取新的url,但是在实际操作中通常都会遇到各种各样的问题,比如说抓取数据的过程中需要根据实际需求来筛选url继续爬行;或者说为了能正常爬取,减少别人服务器的压力,你需要控制住爬取的速度和工作量,但是即便再小心,很多时候也会遇到被网页封禁的情况。在实际操作过程中,我们经常会被网站禁止访问但是却一直找不到原因,这也是让很多人头疼的原因,这里有几个方面可以帮你初步检测一下到底是哪里出了问题。例如以下一段代码 <?php // 要访问的目标页面 $url = "http://httpbin.org/ip"; $urls = "https://httpbin.org/ip";
// 代理服务器 define("PROXY_SERVER", "tcp://t.16yun.cn:31111");
// 代理身份信息 define("PROXY_USER", "username"); define("PROXY_PASS", "password");
$proxyAuth = base64_encode(PROXY_USER . ":" . PROXY_PASS);
// 设置 Proxy tunnel $tunnel = rand(1,10000);
$headers = implode("\r\n", [ "Proxy-Authorization: Basic {$proxyAuth}", "Proxy-Tunnel: ${tunnel}", ]); $sniServer = parse_url($urls, PHP_URL_HOST); $options = [ "http" => [ "proxy" => PROXY_SERVER, "header" => $headers, "method" => "GET", 'request_fulluri' => true, ], 'ssl' => array( 'SNI_enabled' => true, // Disable SNI for https over http proxies 'SNI_server_name' => $sniServer ) ]; print($url); $context = stream_context_create($options); $result = file_get_contents($url, false, $context); var_dump($result);
// 访问 HTTPS 页面 print($urls); $context = stream_context_create($options); $result = file_get_contents($urls, false, $context); var_dump($result);?> curlGuzzleHttp 如果你发现你抓取到的信息和页面正常显示的信息不一样,或者说你抓取的是空白信息,那么很有可能是因为网站创建页的程序有问题,所以抓取之前需要我们检查一下;不管是用户还是爬虫程序,其实在浏览信息的时候就相当于给浏览器发送了一定的需求或者说是请求,所以你要确保自己的所有请求参数都是正确的,是没有问题的;很多时候我们的ip地址会被记录,服务器把你当成是爬虫程序,所以就导致现有ip地址不可用,这样就需要我们想办法修改一下现有爬虫程序或者修改相应的ip地址,修改IP地址,可以用亿牛云IP家的代理IP来解决。;注意调整自己的采集速度,即便是要再给程序多加一行代码,快速采集也是很多爬虫程序被拒绝甚至封禁的原因。
|