PHP实现的抓取小说网站内容功能示例

yipeiwu_com6年前PHP代码库

本文实例讲述了PHP实现的抓取小说网站内容功能。分享给大家供大家参考,具体如下:

爬取免费内容,弄到手机,听书,妥妥的。

ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; GreenBrowser)');
ini_set('max_execution_time', '0');
$base = 'https://www.qu.la/book/19434/';
$start = '7504808.html';
$content_grep = '/    (.*)<br\/>/';
//$content_grep = '/<div id="content">(.*)<br\/>/sS';
$next_grep = '/<a id="pager_next" href=\"(\d+\.html)\" target="_top" class="next">下一章<\/a>/';
$next = $start;
$file_name = '听书了.txt';
while($next) {
  echo 'getting ' . $next . PHP_EOL;
  $result = file_get_contents($base . $next);
  preg_match_all($content_grep, $result, $match);
  $isTitle = true;
  $content = "";
  foreach($match[1] as $line) {
    $line  = str_replace("<br/>", '', $line);
    $line  = str_replace(" ", '', $line);
    if($isTitle) {
      $content = $line . PHP_EOL . PHP_EOL;
      $isTitle = false;
    } else {
      $content .= '    ' . $line . PHP_EOL . PHP_EOL;
    }
  }
  $file = fopen($file_name, 'a');
  echo 'write length: ' . strlen($content) . PHP_EOL;
  fwrite($file, $content);
  fclose($file);
  echo '.';
  preg_match($next_grep, $result, $match);
  $next = $match[1];
}

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php socket用法总结》、《php字符串(string)用法总结》、《PHP数学运算技巧总结》、《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP数据结构与算法教程》、《php程序设计算法总结》及《PHP网络编程技巧总结

希望本文所述对大家PHP程序设计有所帮助。

相关文章

Array of country list in PHP with Zend Framework

复制代码 代码如下: public static function countryList($local) { $locale = new Zend_Locale('en_US'); $...

php使用exec shell命令注入的方法讲解

使用系统命令是一项危险的操作,尤其在你试图使用远程数据来构造要执行的命令时更是如此。如果使用了被污染数据,命令注入漏洞就产生了。exec()是用于执行shell命令的函数。它返回执行并返...

Zend studio文件注释模板设置方法

步骤:Window -> PHP -> Editor -> Templates,这里可以设置(增、删、改、导入等)管理你的模板。新建文件注释、函数注释、代码块等模板的实...

解析关于wamp启动是80端口被占用的问题

解析关于wamp启动是80端口被占用的问题

问题如下:网上有关于这个处理办法,说道:VS2010在更新了SP1后,会在开机时自动启动一个服务,占用WAMP的80端口,导致WAMP无法正常启动Apache。提示信息:Your por...

PHP经典算法集锦【经典收藏】

本文实例总结了PHP经典算法。分享给大家供大家参考,具体如下: 1、首先来画个菱形玩玩,很多人学C时在书上都画过,咱们用PHP画下,画了一半。 思路:多少行for一次,然后在里面空格和星...