如何抓取BT天堂电影数据
晚上休息,想弄两部好看的电影看看,
找了半天没找到想看的,
想到之前有个人爬知乎的用户数据,突发奇想,
没事把BT天堂的电影信息爬下来,下次阔以直接查数据库。
只能说闲的蛋疼,哈哈,还能码下代码
^_^
1.抓取网站html源码
<span style="font-size:24px;">$url = "www.bttiantang.cc"; $html = shell_exec("curl $url");</span>
2.获取总页数,电影总数(正则匹配)
<span style="font-size:24px;">preg_match("/<span class='\"pageinfo\"'>.*?/", $html, $pageCount); preg_match_all("/\d{1,10000}/",$pageCount[0],$pageCount);</span></span>
3.抓取电影信息(正则匹配信息)
<span style="font-size:24px;">preg_match("/\d{4}\/\d{2}\/\d{2}/" , $pageInfo[0][$i], $updateTime); preg_match("/<font color='\"#FF6600\"'>(.*?)<i>/" , $pageInfo[0][$i], $movieName); preg_match("/<strong>(\d{1})/" , $pageInfo[0][$i], $movieScore_int); preg_match("/<em class='\"fm\"'>(\d{1})/" , $pageInfo[0][$i], $movieScore_decimal); preg_match("/href=\"(.*?)\"/" , $pageInfo[0][$i], $movieUrl); preg_match("/<p class='\"des\"'>(.*?)/" , $pageInfo[0][$i], $actor); </p></em></strong></i></font></span>
4.插入数据库,大功告成
总体来说,php抓取的速度还是蛮快的,4min不到,采集2w多条信息。
start:01:22:54
end:01:26:11
附数据库截图:
附源码:
<?php $url = "www.bttiantang.cc"; $html = shell_exec("curl $url"); preg_match("/<span class=\"pageinfo\">.*?/", $html, $pageCount); preg_match_all("/\d{1,10000}/",$pageCount[0],$pageCount); $pageSize = intval($pageCount[0][0]); $movieCount = $pageCount[0][1]; $conn = mysql_connect('***','***',''); mysql_select_db('***',$conn); mysql_query('set names utf8',$conn); for($j=1;$j.*?/s", $movieHtml, $pageInfo); for($i=0;$i<count preg_match ad if str_replace color='\"#FF6600\"'>(.*?)<i>/" , $pageInfo[0][$i], $movieName); /*****same conditions*****/ if(empty($movieName)) preg_match("/<b>(.*?)<i>/" , $pageInfo[0][$i], $movieName); if(empty($movieName)) preg_match("/<b>(.*?)/" , $pageInfo[0][$i], $movieName); /************************/ $movieName = $movieName[1]; preg_match("/<strong>(\d{1})/" , $pageInfo[0][$i], $movieScore_int); $movieScore_int = $movieScore_int[1]; preg_match("/<em class='\"fm\"'>(\d{1})/" , $pageInfo[0][$i], $movieScore_decimal); $movieScore_decimal = $movieScore_decimal[1]; $movieScore = floatval($movieScore_int.'.'.$movieScore_decimal); preg_match("/href=\"(.*?)\"/" , $pageInfo[0][$i], $movieUrl); $movieUrl = $movieUrl[1]; preg_match("/<p class='\"des\"'>(.*?)/" , $pageInfo[0][$i], $actor); $movieActor = str_replace("<em>",'',str_replace("</em>",'',$actor[1])); mysql_unbuffered_query("insert into movie (name,actor,url,update_ts,score) values ('$movieName','$movieActor','$movieUrl',<span style="white-space:pre"> </span>'$updateTime','$movieScore')"); } } ?></p></em></strong></b></i></b></i></count>
本电影信息属于从BT天堂抓取,并未涉及机密信息,因此本人不承担任何法律责任!
若有相关电影信息涉及您的版权或知识产权或其他利益,请告知,确认后会尽快删除。
版权声明:本文为博主原创文章,未经博主允许不得转载。
以上就介绍了如何抓取BT天堂电影数据,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

每个人都在期待今天的Windows1123H2发布。事实上,Microsoft刚刚启动了对发布预览版的更新,这是正式发布阶段之前最接近的频道。被称为Build22631的Microsoft表示,他们正在推出新的更名聊天应用程序,电话链接和一起玩小部件,这些小部件在过去几个月中已在其他内部渠道中进行了测试。“这个新的更新将具有与Windows11版本22H2相同的服务分支和代码库,并将与所有新宣布的功能累积,包括Windows中的Copilot(预览版),”Microsoft承诺。雷德蒙德官员进一

说明match用于匹配操作,其返回值为boolean类型。通过match,可以简单地验证list中是否存在某种要素。实例//验证list中string是否有以a开头的,匹配到第一个,即返回truebooleananyStartsWithA=stringCollection.stream().anyMatch((s)->s.startsWith("a"));System.out.println(anyStartsWithA);//true//验证list中string是否

请问如何修改url某一参数的参数值呢?是要拆开了再拼回去吗?那么请问如何修改url某一参数的参数值呢?是要拆开了再拼回去吗?http://127.0.0.1/myo/newuser.php?mod=search&type=fastone比如现在我要修改mod=new要怎么做呢?------解决方案--------------------发送了请求

概念1、各种Match操作可用于判断给定的Predicate是否符合Stream的要素。2、Match操作是终端操作,返回布尔值。实例booleananyStartsWithA=stringCollection.stream().anyMatch((s)->s.startsWith("a"));System.out.println(anyStartsWithA);//truebooleanallStartsWithA=stringCollection.stream().

概念1、各种Match操作可用于判断给定的Predicate是否符合Stream的要素。2、Match操作是终端操作,返回布尔值。实例booleananyStartsWithA=stringCollection.stream().anyMatch((s)->s.startsWith("a"));System.out.println(anyStartsWithA);//truebooleanallStartsWithA=stringCollection.stream().

不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没问题。

图片消失如何解决先是图片文件上传$file=$_FILES['userfile']; if(is_uploaded_file($file['tmp_name'])){$query=mysql_query("INSERT INTO gdb_banner(image_src ) VALUES ('images/{$file['name'
