PHP抓取豆瓣读书爬虫代码
<?php
//演示地址 http://asizu.sinaapp.com/reptile_douban.php
//数据量不是特别大,没有写抓完数据便停止。 喜欢的朋友拿去自己改改就好了
header("Content-Type:text/html;charset=utf-8"); define("MYSQL_HOST",SAE_MYSQL_HOST_M);
define("MYSQL_NAME","douban");
define("MYSQL_USER",SAE_MYSQL_USER);
define("MYSQL_PASSWORD",SAE_MYSQL_PASS);
define("MYSQL_PORT",SAE_MYSQL_PORT); $action = $_GET['url']; if(!empty($action))
{
$data = getLink($action);
$data = str_substr('<div class="article">','<div class="aside">',$data);
$dataArray = explode('<dl>',$data); array_splice($dataArray,0,1); foreach($dataArray as $key => $item)
{
$bookArray[$key]['title'] = str_substr('class="title" target="_blank">','</a>',$item);
$bookArray[$key]['rating'] = str_substr('<span class="rating_nums">','</span>',$item);
$bookArray[$key]['book_id'] = str_substr('/subject/','/?from',$item); if(!selectBookSaveed($bookArray[$key]['title']))
{
insertMysql($bookArray[$key]);
} //$dataArray[$key] = htmlspecialchars($item);
} $page = explode('book?start=',$action);
$new_url = $page[0] ."book?start=". ($page[1] + 15);
// var_dump($page); // var_dump($bookArray);
} //获取连接
function getLink($url)
{
$data = getData($url);
return $data;
} //抓取数据的函数
function getData($url)
{
//初始化
$ch = curl_init(); //设置选项,包括URL
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11'); //执行并获取HTML文档内容
$output = curl_exec($ch); //释放curl句柄
curl_close($ch); //返回数据
return $output;
} //保存入库
function insertMysql($dataArray)
{
$field = "";
$value = "";
foreach($dataArray as $key => $item)
{
$field .= ",".$key;
$value .= ",'".$item."'";
}
$field = substr($field,1,strlen($field)-1);
$value = substr($value,1,strlen($value)-1); $sql = "INSERT INTO douban (".$field.") VALUES(".$value.")";
// var_dump($sql);
// exit;
$result = mysqlOperation($sql); return $result;
} //查询是否已经录入
function selectBookSaveed($title)
{
$sql = "SELECT * FROM douban WHERE title = '".$title."'";
$result = mysqlOperation($sql,"select");
if(empty($result))
{
return false;//未存在
}
return true;
} //数据库操作方法
function mysqlOperation($sql,$method = "query")
{
$mysqli = new mysqli(
SAE_MYSQL_HOST_M,
SAE_MYSQL_USER,
SAE_MYSQL_PASS,
SAE_MYSQL_DB,
SAE_MYSQL_PORT
);
if( mysqli_connect_errno() )
echo 'error';
// return false; if($method == "select")
return mysqli_fetch_assoc($mysqli->query($sql)); if($method == "query")
return $mysqli->query($sql); } // 字符串截取函数
function str_substr($start, $end, $str)
{
$temp = explode($start, $str, 2);
$content = explode($end, $temp[1], 2);
return $content[0];
}
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.4.min.js"></script>
<script>
$(document).ready(function(){
if($("#input").val() != ""){
$("#froms").submit();
}
});
</script>
<form action="?" method="get" id="froms">
<input id="input" value="<?php echo $new_url; ?>" type="text" name="url">
<input type="submit">
</form>
PHP抓取豆瓣读书爬虫代码的更多相关文章
- 用python+selenium抓取豆瓣读书中最受关注图书并按评分排序
抓取豆瓣读书中的(http://book.douban.com/)最受关注图书,按照评分排序,并保存至txt文件中,需要抓取书籍的名称,作者,评分,体裁和一句话评 方法一: #coding=utf-8 ...
- 基于Casperjs的网页抓取技术【抓取豆瓣信息网络爬虫实战示例】
CasperJS is a navigation scripting & testing utility for the PhantomJS (WebKit) and SlimerJS (Ge ...
- Python爬虫----抓取豆瓣电影Top250
有了上次利用python爬虫抓取糗事百科的经验,这次自己动手写了个爬虫抓取豆瓣电影Top250的简要信息. 1.观察url 首先观察一下网址的结构 http://movie.douban.com/to ...
- Scrapy爬虫入门系列4抓取豆瓣Top250电影数据
豆瓣有些电影页面需要登录才能查看. 目录 [隐藏] 1 创建工程 2 定义Item 3 编写爬虫(Spider) 4 存储数据 5 配置文件 6 艺搜参考 创建工程 scrapy startproj ...
- 哪吒票房超复联4,100行python代码抓取豆瓣短评,看看网友怎么说
<哪吒之魔童降世>这部国产动画巅峰之作,上映快一个月时间,票房口碑双丰收. 迄今已有超一亿人次观看,票房达到42.39亿元,超过复联4,跻身中国票房纪录第三名,仅次于<战狼2> ...
- Python小爬虫——抓取豆瓣电影Top250数据
python抓取豆瓣电影Top250数据 1.豆瓣地址:https://movie.douban.com/top250?start=25&filter= 2.主要流程是抓取该网址下的Top25 ...
- python爬虫:利用正则表达式爬取豆瓣读书首页的book
1.问题描述: 爬取豆瓣读书首页的图书的名称.链接.作者.出版日期,并将爬取的数据存储到Excel表格Douban_I.xlsx中 2.思路分析: 发送请求--获取数据--解析数据--存储数据 1.目 ...
- python爬虫构建代理ip池抓取数据库的示例代码
爬虫的小伙伴,肯定经常遇到ip被封的情况,而现在网络上的代理ip免费的已经很难找了,那么现在就用python的requests库从爬取代理ip,创建一个ip代理池,以备使用. 本代码包括ip的爬取,检 ...
- python2.7抓取豆瓣电影top250
利用python2.7抓取豆瓣电影top250 1.任务说明 抓取top100电影名称 依次打印输出 2.网页解析 要进行网络爬虫,利用工具(如浏览器)查看网页HTML文件的相关内容是很有必要,我使用 ...
随机推荐
- Ajax实现搜索栏中输入时的自动提示功能
使用 jQuery(Ajax)/PHP/MySQL实现自动完成功能 JavaScript代码: <script src="jquery-1.2.1.pack.js" type ...
- Sciter使用心得
1. div双击事件 $(div).onMouse = function(evt) { switch(evt.type) { case Event.MOUSE_DCLI ...
- Delphi 提示在Delphi的IDE中,按Ctrl+Shift+G键可以为一个接口生成一个新的GUID。
对于Object Pascal语言来说,最近一段时间最有意义的改进就是从Delphi3开始支持接口(interface),接口定义了能够与一个对象进行交互操作的一组过程和函数.对一个接口进行定义包含两 ...
- saltstack配置安装的一些关键步骤及安装时各种报错的分析
以下其他仅做参考,官方网址才是安装重点:http://docs.saltstack.cn/topics/installation/rhel.html 与安装相关的一些文档或资料: 一.linux服务器 ...
- DIV背景半透明文字不半透明的样式
DIV背景半透明,DIV中的字不半透明 代码如下:<body bgcolor="#336699"> <div style="filter:alpha(o ...
- 将垃圾送入无底洞,顺便整理dev知识
相信用过Linux的童鞋们都用过crontab来做定时任务,不需要额外的安装程序和配置,一条简单的语句搞定定时任务,但是小伙伴们发现了没,如果你的定时任务执行频率很高而且会产生大量的输出的话,你的老爷 ...
- Json转换插件
附赠一个简单的使用案例,希望能帮助大家使用! /* json.js 2007-08-05 Public Domain This file adds these methods to JavaScrip ...
- manacher算法_求最长回文子串长度
很好的总结,转自: http://blog.csdn.net/dyx404514/article/details/42061017 总结为:两大情况,三小情况. 两大情况:I. i <= p 1 ...
- 基于AWS的自动化部署实践
过年前,我给InfoQ写了篇文章详细介绍我们团队在过去4年基于AWS的自动化部署实践.文章包括了:为什么选择AWS.AWS上自动化部署的优势和挑战.我们的解决方案,以及和AWS DevOps方案(Op ...
- openstack neutron 各节点网络配置