phpspider
phpspider copied to clipboard
请问是否支持直接爬取 内容页url
请问能够提前批量生成内容页的url,再加入爬取队列?
支持的,首先设置好内容页规则,比如: 'content_url_regexes' => array( "http://www.mafengwo.cn/i/\d+.html", ), 然后在on_scan_page里面批量生成内容页url $spider->on_scan_page = function($page, $content, $phpspider) { for ($i = 0; $i < 1000; $i++) { $url = "http://www.mafengwo.cn/i/{$i}.html"; $phpspider->add_url($url); } };
如果内容页并没有在入口页面或者列表页面呢,我只想批量生成内容页面url,然后爬虫挨个爬内容
对add_url
函数做点小调整就可以。新增一个$force_content
参数,调用add_url
函数时设置该参数为true
。内容页、列表页规则都留空即可。
public function add_url($url, $options = array(), $depth = 0, $force_content = false)
{
// 投递状态
$status = false;
$link = $options;
$link['url'] = $url;
$link['depth'] = $depth;
$link = $this->link_uncompress($link);
if ($this->is_list_page($url))
{
$link['url_type'] = 'list_page';
$status = $this->queue_lpush($link);
}
if ($this->is_content_page($url) || $force_content)
{
$link['url_type'] = 'content_page';
$status = $this->queue_lpush($link);
}
if ($status)
{
if ($link['url_type'] == 'scan_page')
{
log::debug("Find scan page: {$url}");
}
elseif ($link['url_type'] == 'list_page')
{
log::debug("Find list page: {$url}");
}
elseif ($link['url_type'] == 'content_page')
{
log::debug("Find content page: {$url}");
}
}
return $status;
}