今天一同学给我推荐了本书,说是刚出不久,内容还不错,是心灵鸡汤类的书,于是按捺不住就像在网上下一本,可是木有资源肿么办。只有在线看的,作为一个准码农,所以甭废话了,咱得用代码解决问题对吧……
1.工欲善其事必先利其器
首先你得有个工具用吧,别想我之前似得抓个网页,就写了好多的$pattern去挨个匹配标签,作为伪程序员那哪行啊,对吧,咱得学着它Simple_html_dom
专门解析HTML文档的一东西,超好用的哦~。Simple_html_dom是什么东西在咱博客园上就有怎么用的博客,在这不做赘述。
2.代码详解
啥也甭说,还是代码说话给力,以下是抓去新浪的小说为例。
(1)首先得引入文件吧
include"simple_html_dom.php";
(2)咱这抓小说比较简单,深度就一层,不涉及到什么图的深搜广搜,你只要观察URL的规律即可
$url="http://vip.book.sina.com.cn/chapter/220331/2143";//用for循环加东西就是了
(3)如果for循环的次数太多会报错:超时提醒。甭担心这不是咱的错,这是配置文件的错,咱加上这句话就OK了
ini_set('max_execution_time', '100');
(4)实例化Simple_html_dom
$html=new simple_html_dom();
(5)然后就是for循环生成一个个的URL然后提取内容了主要用到下面的东西
//从URL加载
$html->load_file($url_temp);
//查找class为mainContent的div
$title=$html->find("div[class=mainContent] h1",0);
//收集正文
$content=$html->find("div[class=mainContent] div[class=contTxt1]",0);
(6)适当的用正则控制以下格式
//换行
$content=preg_replace($pattern,"\r\n",$content);
//加空格
$content=preg_replace($pattern1," ",$content);
(7)当然少不了他了(去除html标签)
$title=strip_tags($title);
$content=strip_tags($content);
(8)写入文件即可
(9)恭喜你,小说抓取成功。
3.主要用到的技术
(1)对php的熟练应用
(2)掌握正则表达式。
(3)主要是Simple_html_dom.php的使用
(4)还得注意php超时问题
当循环太多时会出现超时问题,建议不要修改配置文件
总浏览量
4,993次
博客园历史 1,903 腾讯云 1,130 阿里云 1,958 本站新增 2
本站阅读按浏览器在 15 分钟内去重;禁用浏览器存储时按网络地址去重。推荐按浏览器一年内去重。仅使用站内随机标识,不采集浏览器指纹。
分享这篇文章
原创内容,未经授权禁止转载。
欢迎分享原文链接。除另有署名或许可说明外,本站原创文章的著作权由青玉伏案享有;未经书面授权,禁止整篇转载、复制发布、改编传播或建立内容镜像。
版权与使用条款
- 依法属于合理使用、法定许可等情形的,按法律规定执行;引用时应注明作者、作品名称和原文链接,不得歪曲、篡改或隐去署名。
- 经书面授权使用的,请遵守约定的用途、范围与署名要求。注明出处不等同于已经取得整篇转载或其他使用授权。
- 第三方图片、引用内容和书籍封面等权利归相应权利人所有;开源代码与 Demo 按其各自许可证使用,本声明不改变已有许可。
- 本声明参考《中华人民共和国著作权法》第十条、第二十四条、第五十二条等。对侵权使用,权利人保留依法要求停止侵害并追究相应责任的权利。

可以在linux下用wget把一个网站给弄下来。。。