案例1
public function index()
{
ini_set('max_execution_time', '0');
set_time_limit (0);
$page =Db::name('user')->order('id DESC')->value('page');
for ($i=$page; $i<=1425; $i++){
$this->du($i);
}
}
public function du($i){
$data = QueryList::get('http://www.njslawyers.org/searchLawyer?association=&practiceScope=&gender=&name=&licenseNumber=&practiceOrg=&x=80&y=20&page='.$i)
->rules([
'link'=>array('dt>span>a','href'),
'page'=>array('.act','text'),
])
->queryData();
$page = $data[0]['page'];
foreach ($data as $key => $value){
$table = QueryList::get('http://www.njslawyers.org'.$value['link'])->find('table');
$tableRows = $table->find('tr:eq(2),tr:eq(14)')->map(function($row){
return $row->find('td:eq(1)')->texts()->all();
});
$data1 = $tableRows->all();
$name =$data1[0][0];
$email =$data1[1][0];
$link = $table->find('tr:eq(3)')->map(function($row){
return $row->find('td:eq(1)>a')->attr('href');
});
$phone_link =$link->all()[0];
$phone = QueryList::get('http://www.njslawyers.org'.$phone_link) ->rules([
'phone'=>array('dd:eq(4)','text'),
])->queryData();
$phone = (isset($phone[0]['phone']))?$phone[0]['phone']:'';
Db::name('user')->insert(['name'=>$name,'mobile'=>$phone,'email'=>$email,'page'=>$page]);
}
return $page;
}
案例2
public function index()
{
ini_set('max_execution_time', '0');
set_time_limit (0);
$page =Db::name('user')->order('id DESC')->value('page')??0;
$page++;
for ($i=$page; $i<=484; $i++){
$this->du($i);
}
}
public function du($i){
$html = QueryList::get('http://sx.sxlsw.org/lvshiS.aspx?page='.$i);
$table=$html->find('table');
$page = $html->find('.hover')->text();
$tabledata = $table->find('tr:gt(3)')->map(function($row){
return $row->find('td>a')->attr('href');
});
foreach ($tabledata as $key => $value){
$tabledata = QueryList::get('http://sx.sxlsw.org'.$value)->find('table');
$tableRows = $tabledata->find('tr:eq(0),tr:eq(3),tr:eq(4)')->map(function($row){
return $row->find('td:eq(1),td:eq(3)')->texts()->all();
});
$data = $tableRows->all();
$name = isset($data[0][0])?$data[0][0]:'';
$email = isset($data[1][1])?$data[1][1]:'';
$phone = isset($data[2][0])?$data[2][0]:'';
Db::name('user')->insert(['name'=>$name,'mobile'=>$phone,'email'=>$email,'page'=>$page]);
}
}