使用curl制作简易百度搜索

摘要:
$_GET['key']:'';11session_start();12$_SESSION['key']=$k;1314$curl=curl_init();15//设置你需要抓取的URL1617for{18curl_setopt($curl,CURLOPT_URL,"http://www.baidu.com/s?wd={$_SESSION['key']}&pn={$i}");19//设置header20curl_setopt;21//设置cURL参数,要求结果保存到字符串中还是输出到屏幕上。22curl_setopt;23//运行cURL,请求网页24$data=curl_exec;2526$pre='/˂a.*?wd=搜索的关键字但是我发现使用https协议后不能够获得百度上的数据于是改为http://www.baidu.com?

这几天研究了一下php中的curl类库,做了一个简单的百度搜索,先上代码

1 <div style="200px;height:100px;">
2     <div>百度搜索</div>
3     <form action="" method="get">
4         <input type="text" name="key">
5         <input type="submit" value="搜索">
6     </form>
7 </div>
8 <?php
9 $k = '';
10 $k = !empty($_GET['key'])?$_GET['key']:'';
11 session_start();
12 $_SESSION['key'] = $k;
13 
14 $curl =curl_init(); 
15 //设置你需要抓取的URL 
16 
17 for($i = 0;$i<2;$i++){
18 curl_setopt($curl, CURLOPT_URL, "http://www.baidu.com/s?wd={$_SESSION['key']}&pn={$i}"); 
19 //设置header 
20 curl_setopt($curl, CURLOPT_HEADER, 1); 
21 //设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。 
22 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
23 //运行cURL,请求网页 
24 $data = curl_exec($curl); 
25 
26 $pre = '/<h3 class="t"><a.*?href = "http://t.zoukankan.com/(.*?)".*?target="_blank".*?>(.*?)</a></h3>/s';
27 preg_match_all($pre,$data,$match);
28 
29 foreach ($match[1] as $k => $v) {
30 ?>    
31 <div style="font-size:20px;color:red;">
32     <a href="http://t.zoukankan.com/<?php echo $v;?>" target="_blank"><?php echo strip_tags($match[2][$k]);?></a>
33 </div>
34 <?php
35 }
36 }
37 
38 curl_close($curl);
39 
40 
41 ?>

经过分析百度的搜索时的url发现有一个规律

https://www.baidu.com/s?wd=搜索的关键字

但是我发现使用https协议后不能够获得百度上的数据于是改为http://www.baidu.com?wd=搜索的关键字就可以啦!!

效果图如下:

使用curl制作简易百度搜索第1张

免责声明:文章转载自《使用curl制作简易百度搜索》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇WPF DevExpress ChartControl使用之XYDiagramCentOS 安装Chrome下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

influxdb简单使用

之前对influxdb有一个简单的了解和入门的使用,近期由于想使用influxdb做一点东西玩玩,又要捡起influxdb。本篇就针对influxdb的数据库、表的概念,增删改查操作、RESTful操作等做下总结。 一、influxdb与传统数据库的比较 库、表等比较: influxDB 传统数据库中的概念 database 数据库 meas...

微信开发笔记:获取用户openid,以及用户头像昵称等信息

微信开发的时候有一个很便利的途径来进行一个用户的一步注册登录,就是使用用户的微信信息来直接进行登陆,可以省去很多不必要的麻烦。那具体这些信息是如何来获取的呢? 首先呢,我们需要对微信进行一个授权,让微信页面有权限来读取我们的用户信息: $redirect_uri = urlencode($url); //设置授权页面,此处填写回调的授权页面地址 $scop...

如何使用PHP生成图片

79 /** 80 * 从图片文件创建Image资源 81 * @param $file 图片文件,支持url 82 * @return bool|resource 成功返回图片image资源,失败返回false 83 */ 84 function createImageFromFile($file){ 85 if(pr...

微信公众平台开发(83) 生成带参数二维码

本文介绍在微信公众平台上如何使用高级接口开发生成带参数二维码的功能。 一、场景二维码为了满足用户渠道推广分析的需要,公众平台提供了生成带参数二维码的接口。使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送。 目前有2种类型的二维码,分别是临时二维码和永久二维码,前者有过期时间,最大为1800秒,但能够生成较多数量,后者无过期时...

解析百度搜索结果链接的url,获取真正的url

<?php $url = "http://www.baidu.com/link?url=nS2MGJqjJ4zBBpC8yDF8xDh8vibi1lVeE7gGr9UONBu"; $info = parse_url($url); $fp = fsockopen($info['host'], 80,$errno, $errstr, 30); fput...

pthread实现多线程查询(转)

导读:大多数网站的性能瓶颈不在PHP服务器上,因为它可以简单地通过横向增加服务器或CPU核数来轻松应对(对于各种云主机,增加VPS或CPU核数就更方便了,直接以备份镜像增加VPS,连操作系统、环境都不用安装配置),而是在于MySQL数据库。如果用 NoSQL 数据库,也许需要十次查询,才能处理完同样地业务逻辑。此时PHP多线程的作用非常明显,它可以同时执行...