爬虫进阶开发——之内置方法

本节介绍爬虫的内置方法

add_url($url, $options = array())

一般在on_scan_pageon_list_page回调函数(在爬虫进阶开发——之回调函数中会详细描述)中调用, 用来往待爬队列中添加url

@param $url 待添加的url@param $options 成员包括method, headers, params, context_data, reserve和 proxy, 如下所示:
@param $options['method'] 默认为"get"请求, 也支持"post"请求@param $options['headers'] 此url的Headers, 可以为空@param $options['params'] 发送请求时需添加的参数, 可以为空@param $options['context_data'] 此url附加的数据, 比如内容页需要列表页一些数据, 可以为空@param $options['proxy'] 访问此url时使用的代理服务器,不使用请留空

栗子1:

  1. $spider->on_scan_page = function($page, $content, $phpspider)
  2. {
  3. $regex = "#http://pic.qiushibaike.com/system/pictures/\d+#";
  4. $urls = array();
  5. preg_match_all($regex, $content, $out);
  6. $urls = empty($out[0]) ? array() : $out[0];
  7. if (!empty($urls)) {
  8. foreach ($urls as $url)
  9. {
  10. $phpspider->add_url($url);
  11. }
  12. }
  13. ...
  14. return false;
  15. };

add_scan_url($url, $options = array())

一般在on_start回调函数(在爬虫进阶开发——之回调函数中会详细描述)中调用, 用来往待爬队列中添加scan_url

@param $url 待添加的scan_url@param $options 成员包括method, headers, params, context_data, reserve和 proxy, 如下所示:
@param $options['method'] 默认为"get"请求, 也支持"post"请求@param $options['headers'] 此url的Headers, 可以为空@param $options['params'] 发送请求时需添加的参数, 可以为空@param $options['context_data'] 此url附加的数据, 比如内容页需要列表页一些数据, 可以为空@param $options['proxy'] 访问此url时使用的代理服务器,不使用请留空

举个栗子:

  1. $spider->on_start = function($page, $content, $phpspider)
  2. {
  3. for ($i = 0; $i < 10; $i++)
  4. {
  5. $phpspider->add_scan_url("http://www.qiushibaike.com/page.php?page=".$i);
  6. }
  7. };

栗子2:

  1. $spider->on_list_page = function($page, $content, $phpspider)
  2. {
  3. ...
  4. $next_url = str_replace($page['url'], "page=".$current_page_num, "page=".$page_num);
  5. $options = array(
  6. 'method' => 'post',
  7. 'params' => array(
  8. 'page' => $page_num,
  9. 'size' => 18
  10. )
  11. );
  12. $phpspider->add_url($next_url, $options);
  13. return false;
  14. };

request_url($url, $options = array())

一般在on_start,on_download_page,on_scan_pageon_list_page回调函数(在爬虫进阶开发——之回调函数中会详细描述)中调用, 下载网页, 得到网页内容

@param $url 待添加的url@param $options 成员包括method, headers, params, context_data, reserve 和 proxy, 如下所示:
@param $options['method'] 默认为"get"请求, 也支持"post"请求@param $options['headers'] 此url的Headers, 可以为空@param $options['params'] 发送请求时需添加的参数, 可以为空@param $options['context_data'] 此url附加的数据, 比如内容页需要列表页一些数据, 可以为空@param $options['proxy'] 访问此url时使用的代理服务器,不使用请留空

举个栗子:

  1. $spider->on_download_page = function($page, $phpspider)
  2. {
  3. $url = "https://checkcoverage.apple.com/cn/zh/?sn=FK1QPNCEGRYD";
  4. $options = array(
  5. 'method' => 'post',
  6. 'params' => array(
  7. 'sno' => 'FK1QPNCEGRYD',
  8. 'CSRFToken' => $result[1]
  9. )
  10. );
  11. // 通过发送带参数的post请求,下载网页,并将网页内容赋值给result
  12. $request = $phpspider->request_url($url, $options);
  13. ...
  14. return $page;
  15. };