PHP 爬虫实战 爬取斗鱼直播数据
更新时间:2023-11-071. 项目需求
在进行 PHP 爬虫实战时,我们需要爬取一个斗鱼直播的数据(这里以斗鱼直播为例子),其分为以下几个步骤:
$ch = curl_init();
$url = 'https://www.douyu.com/g_LOL'; // 以英雄联盟分类为例,更换其他分类的链接即可。
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$content = curl_exec($ch);
curl_close($ch);
2. 解析HTML页面
获取到HTML页面的内容后,我们需要进行信息的提取和解析。这里我们可以使用 PHP 的 DOM 解析库 - DomDocument。
$doc = new DomDocument();
@$doc->loadHTML($content);
// 获取列表内容
$divs = $doc->getElementsByTagName('div');
3. 提取关键信息
在获取到HTML页面的内容并解析后,我们需要提取并整理需要的数据。例如斗鱼直播中主播的昵称、照片、观看人数等信息。
$data = array();
foreach($divs as $div){
if($div->hasAttribute('class') && $div->getAttribute('class') == 'ListContent'){
$img = $div->getElementsByTagName('img');
$name = $div->getElementsByTagName('h2');
$num = $div->getElementsByTagName('span');
$url = $div->getElementsByTagName('a');
$data[] = array(
'photo' => $img->item(0)->getAttribute('data-original'),
'name' => $name->item(0)->nodeValue,
'url' => "https://www.douyu.com".$url->item(0)->getAttribute('href'),
'num' => $num->item(0)->nodeValue
);
}
}
4. 存储数据
最后,我们需要将获取到的数据存储到数据库中。这里我们可以使用 MySQL 数据库存储。
$conn = mysqli_connect('localhost', 'root', '', 'test');
foreach($data as $item){
$photo = $item['photo'];
$name = $item['name'];
$url = $item['url'];
$num = $item['num'];
$sql = "insert into douyu(photo, name, url, num) values('$photo', '$name', '$url', '$num')";
mysqli_query($conn, $sql);
}
mysqli_close($conn);