如何爬取列表页中的数据?
一般情况下, 我们只需爬取内容页的数据即可, 不过有时候列表网页中也会有需要爬取的数据, 那想要爬取这部分数据, $phpspider->add_url($url, $options)函数
举个栗子:
在爬取爱游网的时候, 除了基本的内容页信息外, 还需要爬取浏览次数(或阅读量), 但是这些数据在列表页中, 这就需要在on_list_page回调函数中做处理
$configs = array(
// configs的其他成员
...
'fields' => array(
array(
'name' => "question_view_count",
// 在内容页中通过XPath提取浏览次数(或阅读量)
'selector' => "//a[contains(@class,'page-view')]",
'required' => true,
),
),
);
$spider->on_list_page = function($page, $content, $phpspider)
{
// 在列表页中通过XPath提取到内容页URL
$content_url = selector::select($content, "//a[contains(@class,'s xst')]/@href");
// 在列表页中通过XPath提取到浏览次数(或阅读量)
$page_views = selector::select($content, "//td[contains(@class,'num')]/em");
// 拼出包含浏览次数(或阅读量)的HTML代码
$page_views = '<div><a class="page-view">' . $page_views + '</a></div>';
$options = array(
'method' => 'get',
'context_data' => $page_views,
);
$phpspider->add_url($content_url, $options);
// 返回true继续提取其他列表页URL
return true;
};