这几天研究了一下php中的curl类库,做了一个简单的百度搜索,先上代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
< div style = "width:200px;height:100px;" >
< div >百度搜索</ div >
< form action = "" method = "get" >
< input type = "text" name = "key" >
< input type = "submit" value = "搜索" >
</ form >
</ div >
<? php
$ k = '' ;
$k = !empty($_GET['key'])?$_GET['key']:'';
session_start();
$_SESSION['key'] = $k;
$ curl = curl_init ();
// 设置你需要抓取的URL
for($ i = 0 ;$i<2;$i++){
curl_setopt($curl, CURLOPT_URL, "http://www.baidu.com/s?wd={$_SESSION['key']}&pn={$i}");
// 设置header
curl_setopt($curl, CURLOPT_HEADER, 1);
// 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 运行cURL,请求网页
$ data = curl_exec ($curl);
$pre = '/<h3 class = "t" >< a. *? href = "(.*?)" .*? target = "_blank" .*?>(.*?)<\/a><\/h3>/s';
preg_match_all($pre,$data,$match);
foreach ($match[1] as $k => $v) {
?>
< div style = "font-size:20px;color:red;" >
< a href="<?php echo $v;?>" target="_blank"><? php echo strip_tags($match[2][$k]);?></ a >
</ div >
<? php
}
}
curl_close($curl);
?>
|
经过分析百度的搜索时的url发现有一个规律
https://www.baidu.com/s?wd=搜索的关键字
但是我发现使用https协议后不能够获得百度上的数据于是改为http://www.baidu.com?wd=搜索的关键字就可以啦!!
效果图如下:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。