继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

采集2345网站

小陈vlog
关注TA
已关注
手记 24
粉丝 16
获赞 81

<?php


// 设置脚本不限制时间一直执行到结束

set_time_limit(0);


/*


create database cj_movie default charset utf8;

use cj_movie;

create table cj_movie

(

id mediumint unsigned not null auto_increment,

title varchar(50) not null comment '电影名称',

logo varchar(150) not null comment '图片',

link varchar(150) not null comment '链接',

primary key (id)

)engine=InnoDB comment '电影基本信息';


*/


class Movie

{

private $init;


public function __construct()

{

// 创建一个下载用的对象

$this->init = curl_init();

// 返回字符串不要直接输出

curl_setopt($this->init, CURLOPT_RETURNTRANSFER, TRUE);

}


// 根据URL地址下载一个页面

public function get($url)

{

curl_setopt($this->init, CURLOPT_URL, $url);

return curl_exec($this->init);

}


// 从一个字符串中截取出一小段

public function getSection($str, $start, $end)

{

// 开始的位置

$startpos = strpos($str, $start);

// 结束的位置

$endpos = strpos($str, $end);

// 开始标记的长度

$startlen = strlen($start);

// 内容的长度

$conlen = $endpos - $startpos - $startlen;

// 截取

return substr($str, $startpos + $startlen, $conlen);

}


// 开始采集

public function start()

{

$pdo = new PDO('mysql:host=localhost;dbname=cj_movie', 'root', '');

$pdo->exec('SET NAMES utf8');

$stmt = $pdo->prepare('INSERT INTO cj_movie VALUES(null,?,?,?)');


// 要采集的分类

$arr = ['aiqing','dongzuo','xiju'];


// 计数

$totalnum = 0;


foreach($arr as $v0)

{

// 循环页数

for($i=1; $i<=100; $i++)

{

// 先下载页面的HTML

$html = $this->get("http://dianying.2345.com/list/$v0-------$i.html");

// 截取出包含电脑的那一段字符串

$html = $this->getSection($html, 'pic180_240', 'v_page');

// 通过正则匹配出每个li标签

$li_re = '/<li.+>.+<\/li>/Us';

// 把匹配到的LI保存到$li中

preg_match_all($li_re, $html, $li);


$img_re = '/<img.+data-src="(.+)".+alt="(.+)">/Us';

$a_re = '/<a.+href="(.+)".+>.+<\/a>/Us';


                  <img.+data-src="(.+)".+alt="(.+)">/Us

// 循环每个电影下载

foreach($li[0] as $v)

{

// 匹配图片和标题

preg_match($img_re, $v, $img);

$img[2] = mb_convert_encoding($img[2], 'utf-8', 'gb2312');

// 匹配详情页的链接

preg_match($a_re, $v, $link);

$stmt->bindValue(1, $img[2]);

$stmt->bindValue(2, $img[1]);

$stmt->bindValue(3, $link[1]);

$stmt->execute();

// 计数

if(++$totalnum % 10 == 0)

{

echo $totalnum . '已下载完成<br>';

ob_flush();

flush();

// 休息一下,把内存中的数据导入到数据库中

sleep(2);

}

}

}

}

echo 'ok!';

}

}


$a = new Movie;

$str = $a->start();


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP