一个php的爬虫,将笔趣阁的书可以都下载下来。
数据库:book 表id
--
-- 数据库: `book`
--
-- --------------------------------------------------------
--
-- 表的结构 `id`
--
CREATE TABLE IF NOT EXISTS `id` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(126) NOT NULL,
`txt` varchar(126) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
文件
<?php
header("Content-type: text/html; charset=utf-8");
$con = mysql_connect("localhost","root","root");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("book", $con);
$title=array();
$book=array();
$key=0;
$url="http://www.biquge.la";
function gettitle($value)
{
$html=curl_get_contents($value);
preg_match_all("/\/book\/[0-9]{1,7}\//i",$html, $match1);
foreach ($match1[0] as $key1 => $value1) {
$ssa=array_search($value1, $GLOBALS["book"]);
if ($ssa===false) {
var_dump($value1);
$GLOBALS["book"][]=$value1;
$url_book=$GLOBALS["url"].$value1;
file_put_contents("book.txt", $GLOBALS["url"].$value1.PHP_EOL,FILE_APPEND);
$html_book=curl_get_contents($url_book);
$url_book_array=explode("/", $url_book);
$count_book_num=count($url_book_array);
$book_num=$url_book_array[$count_book_num-2];
$html_book=mb_convert_encoding($html_book, "UTF-8", "GBK");
//var_dump($html);
preg_match_all("/<dd>.*<\/dd>/i", $html_book, $match_book);
preg_match_all("/<title>.*<\/title>/i", $html_book, $match_book_title_array);
$match_book_title=preg_replace("/<title>/", "", $match_book_title_array[0][0]);
$match_book_title=preg_replace("/<\/title>/", "", $match_book_title);
$match_book_title_arrayone=explode("_", $match_book_title);
var_dump($match_book_title_arrayone[0]);
mysql_query("INSERT INTO `id` (
`id` ,
`name` ,
`txt`
)
VALUES (NULL , '".$match_book_title_arrayone[0]."', '".$book_num.".txt"."')");
foreach ($match_book[0] as $key_book_list => $value_book_list) {
$chapter_array=explode("\"", $value_book_list);
foreach ($chapter_array as $key_chapter => $value_chapter) {
if (preg_match("/[0-9]{1,9}\.html/", $value_chapter)) {
$html_chapter=curl_get_contents($url_book.$value_chapter);
$html_chapter=mb_convert_encoding($html_chapter, "UTF-8", "GBK");
//var_dump($html);
preg_match_all("/<div id=\"content\">.*<\/div>/i", $html_chapter, $match_chapter);
preg_match_all("/<title>.*<\/title>/i", $html_chapter, $match_title);
var_dump($match_title);
$value_content= $match_title[0][0].PHP_EOL.$match_chapter[0][0];
$value_content=str_replace("<br />", PHP_EOL, $value_content);
$value_content=str_replace(" ", " ", $value_content);
$value_content=preg_replace("/<script>.*<\/script>/", "", $value_content);
$value_content=preg_replace("/<title>/", "", $value_content);
$value_content=preg_replace("/<\/title>/", "", $value_content);
$value_content=preg_replace("/<.*>/", "", $value_content);
file_put_contents("book/".$book_num.".txt",$value_content.PHP_EOL,FILE_APPEND);
}
}
}
}
}
preg_match_all("/http:\/\/www.biquge.la\/[a-z]{8,20}\//i", $html, $match);
echo $GLOBALS["key"];
$GLOBALS["key"]++;
//var_dump($match);
while(list($key,$value) = each($match[0])){
$ss=array_search($value, $GLOBALS["title"]);
if ($ss===false) {
var_dump($value);
$GLOBALS["title"][]=$value;
file_put_contents("title.txt", $value.PHP_EOL,FILE_APPEND);
gettitle($value);
}
}
}
function curl_get_contents($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 1000);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if (defined('CURLOPT_IPRESOLVE') && defined('CURL_IPRESOLVE_V4')) {
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
}
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$r = curl_exec($ch);
curl_close($ch);
return $r;
}
gettitle($url);
mysql_close($con);
?>
一个php的爬虫,将笔趣阁的书可以都下载下来。的更多相关文章
- Jsoup-基于Java实现网络爬虫-爬取笔趣阁小说
注意!仅供学习交流使用,请勿用在歪门邪道的地方!技术只是工具!关键在于用途! 今天接触了一款有意思的框架,作用是网络爬虫,他可以像操作JS一样对网页内容进行提取 初体验Jsoup <!-- Ma ...
- 免app下载笔趣阁小说
第一次更新:发现一个问题,就是有时候网页排版有问题的话容易下载到多余章节,如下图所示: 网站抽风多了一个正文一栏,这样的话就会重复下载1603--1703章节. 解决办法: 于是在写入内容前加了一个章 ...
- scrapy框架爬取笔趣阁
笔趣阁是很好爬的网站了,这里简单爬取了全部小说链接和每本的全部章节链接,还想爬取章节内容在biquge.py里在加一个爬取循环,在pipelines.py添加保存函数即可 1 创建一个scrapy项目 ...
- python入门学习之Python爬取最新笔趣阁小说
Python爬取新笔趣阁小说,并保存到TXT文件中 我写的这篇文章,是利用Python爬取小说编写的程序,这是我学习Python爬虫当中自己独立写的第一个程序,中途也遇到了一些困难,但是最后 ...
- bs4爬取笔趣阁小说
参考链接:https://www.cnblogs.com/wt714/p/11963497.html 模块:requests,bs4,queue,sys,time 步骤:给出URL--> 访问U ...
- python爬虫-《笔趣看》网小说《悟空看私聊》
小编是个爱看小说的人,哈哈 # -*- coding:UTF-8 -*- ''' 类说明:下载<笔趣看>网小说<悟空看私聊> ''' from bs4 import Beaut ...
- python应用:爬虫框架Scrapy系统学习第四篇——scrapy爬取笔趣阁小说
使用cmd创建一个scrapy项目: scrapy startproject project_name (project_name 必须以字母开头,只能包含字母.数字以及下划线<undersco ...
- python3 爬虫继续爬笔趣阁 ,,,,,,,
学如逆水行舟,不进则退 今天想看小说..找了半天,没有资源.. 只能自己爬了 想了半天.,,,忘记了这个古老的技能 捡了一下 import requests from bs4 import Beaut ...
- Python爬取笔趣阁小说,有趣又实用
上班想摸鱼?为了摸鱼方便,今天自己写了个爬取笔阁小说的程序.好吧,其实就是找个目的学习python,分享一下. 1. 首先导入相关的模块 import os import requests from ...
随机推荐
- hadoop datanode 挂机恢复后,多复制的块删除的问题
发现: 如果到namenode,用start-all.sh启动datanode,则会删除该datanode上所有的数据 到datanode上用hadoop-daemon.sh start datano ...
- JS学习(二)
1 数组对象 作用是:使用单独的变量名来存储一系列的值. 1.1 新建数组: var mycars = new Array() mycars[0] = "Saab" mycars[ ...
- 如何在2016年成为一个更好的Node.js开发者
本文主要讨论一些进行Node.js开发的最佳实践和建议,这些建议不仅仅适合开发者,还适合那些管理与维护Node.js基础架构的工作人员.遵循本文提供的这些建议,能够让你更好的进行日常的开发工作. St ...
- [BZOJ2803][Poi2012]Prefixuffix
2803: [Poi2012]Prefixuffix Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 219 Solved: 95[Submit][St ...
- URAL 1223. Chernobyl’ Eagle on a Roof
题目链接 以前做过的一题,URAL数据强点,优化了一下. #include <iostream> #include <cstdio> #include <cstring& ...
- 【JAVA】Quartz 任务调度和异步执行器
Quartz基础结构 Quartz对任务调度的领域问题进行了高度抽象,提出了调度器(Scheduler).任务(Job)和触发器(Trigger)这3个核心概念,并在Trigger触发 ...
- PHP面向对象学习七 总结
1.对象描述的配置 方法名 __tostring() 我们可以直接打印对象句柄,从而获得该方法的基本信息或其他内容. class My{ function __tostring ( ){ echo & ...
- JavaScript放置位置区别
JavaScript放置位置区别 页面中的脚本会在页面载入浏览器后立即执行.我们并不总希望这样.有时,我们希望当页面载入时执行脚本,而另外的时候,我们则希望当用户触发事件时才执行脚本. 位于 head ...
- ios面试(2015.10.30)
今天去深圳市丰泰瑞达实业有限公司面试,面试分为笔试和面试两部分,结果非常不理想,不过学到很多.面试题记录如下: 1.tableview的三个常用方法的实现 - (NSInteger)numberOfS ...
- Setting start page of Windows Phone dynamically through code
Essentially this one line of code will set the start page of the application. var navTo = new Uri(&q ...