如何爬取列表页中的数据?

一般情况下, 我们只需爬取内容页的数据即可, 不过有时候列表网页中也会有需要爬取的数据, 那想要爬取这部分数据, $phpspider->add_url($url, $options)函数

举个栗子:

在爬取爱游网的时候, 除了基本的内容页信息外, 还需要爬取浏览次数(或阅读量), 但是这些数据在列表页中, 这就需要在on_list_page回调函数中做处理

  1. $configs = array(
  2. // configs的其他成员
  3. ...
  4. 'fields' => array(
  5. array(
  6. 'name' => "question_view_count",
  7. // 在内容页中通过XPath提取浏览次数(或阅读量)
  8. 'selector' => "//a[contains(@class,'page-view')]",
  9. 'required' => true,
  10. ),
  11. ),
  12. );
  13. $spider->on_list_page = function($page, $content, $phpspider)
  14. {
  15. // 在列表页中通过XPath提取到内容页URL
  16. $content_url = selector::select($content, "//a[contains(@class,'s xst')]/@href");
  17. // 在列表页中通过XPath提取到浏览次数(或阅读量)
  18. $page_views = selector::select($content, "//td[contains(@class,'num')]/em");
  19. // 拼出包含浏览次数(或阅读量)的HTML代码
  20. $page_views = '<div><a class="page-view">' . $page_views + '</a></div>';
  21. $options = array(
  22. 'method' => 'get',
  23. 'context_data' => $page_views,
  24. );
  25. $phpspider->add_url($content_url, $options);
  26. // 返回true继续提取其他列表页URL
  27. return true;
  28. };