例1.一个简单的 curl 获取百度 html 的爬虫程序(crawler):

spider.php

<?php
/*
获取百度html的简单网页爬虫
*/
$curl = curl_init('http://www.baidu.com'); //resource(2, curl)
curl_exec($curl);
curl_close($curl);

访问该页面:

例2.下载一个网页(百度)并把内容中的百度替换成'PHP'之后输出

<?php
/*
下载一个网页(百度)并把内容中的百度替换成'PHP'之后输出
*/
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com'); //设置访问网页的url
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true); //执行之后不直接打印出来
$output = curl_exec($curl); //执行
curl_close($curl); //关闭cURL
echo str_replace('百度','PHP',$output);

访问该页面:

例3.调用 WenService 获取天气信息

WeatherWS(http://www.webxml.com.cn/WebServices/WeatherWS.asmx?op=getWeather) 提供了多种方式获取天气信息,例如 soap1.1,soap1.2,http get,http post。

现在使用 curl 模拟 http post 来获取天气数据。

weather.php

<?php
/*
cURL调用WebService查询北京的当前天气
*/
$data = 'theCityName=北京';
$curl = curl_init();
curl_setopt($curl,CURLOPT_URL,'http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName');
curl_setopt($curl,CURLOPT_HEADER,0);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl,CURLOPT_POST,1); //post方式
curl_setopt($curl,CURLOPT_POSTFIELDS,$data); //设置post的参数
curl_setopt($curl,CURLOPT_HTTPHEADER,array('application/x-www-form-urlencoded;charset=utf-8','Content-length: '.strlen($data)));
curl_setopt($curl, CURLOPT_USERAGENT, "user-agent:Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Firefox/24.0"); //解决错误:“未将对象引用设置到对象的实例。”
$rtn = curl_exec($curl);
if(!curl_errno($curl)){
//$info = curl_getinfo($curl);
//print_r($info);
echo $rtn;
}else{
echo 'curl error: '.curl_error($curl);
}
curl_close($curl);

页面输出:

也可以在 cmd 中使用:

C:\Users\Administrator>d:

D:\>cd practise/php/curl

D:\practise\php\curl>php -f weather.php > weather.txt

把返回的结果保存在 txt 文件中(如果报错,参考 php运行出现Call to undefined function curl_init()的解决方法)。

cURL 学习笔记与总结(2)网页爬虫、天气预报的更多相关文章

  1. cURL 学习笔记与总结(1)概念

    概念: cURL(Client URL Library Functions)is a command line tool for transfering data with URL syntax(使用 ...

  2. python学习笔记--Django入门一 网页显示时间

    我的笔记是学习http://djangobook.py3k.cn/ 课程时做的,这个上边的文章讲的确实是非常的详细,非常感谢你们提供的知识. 上一篇随笔中已经配置好了Django环境,现在继续跟随ht ...

  3. cURL 学习笔记与总结(5)用 cURL 访问 HTTPS 资源

    <?php $curlobj = curl_init(); // 初始化 curl_setopt($curlobj, CURLOPT_URL, "https://ajax.aspnet ...

  4. Python学习笔记之爬取网页保存到本地文件

     爬虫的操作步骤: 爬虫三步走 爬虫第一步:使用requests获得数据: (request库需要提前安装,通过pip方式,参考之前的博文) 1.导入requests 2.使用requests.get ...

  5. cURL 学习笔记与总结(4)使用 cURL 从 ftp 上下载文件与上传文件到 ftp

    下载: <?php $curlobj = curl_init(); curl_setopt($curlobj, CURLOPT_URL, "ftp://192.***.*.***/文件 ...

  6. Python3学习笔记2:简易Web爬虫

    开发环境 基础语法那章的内容我是在Docker容器中玩的,但是真正做项目的时候,没有IDE的强大辅助功能来协助的话是很累人的一件事.因此从本文中,我选择使用Jetbrain的Pycharm这个IDE来 ...

  7. Html+css学习笔记一 创建一个网页

    第一个网页 新建一个记事本,把名字改成first.html <html> <head> <title>MyFristHtml</title> </ ...

  8. Android学习笔记_69_android 支付宝之网页支付和快捷支付

    参考资料: https://b.alipay.com/order/productDetail.htm?productId=2013080604609654 https://b.alipay.com/o ...

  9. 爬虫制作入门学习笔记2:[转]python爬虫实例项目大全

    WechatSogou [1]- 微信公众号爬虫.基于搜狗微信搜索的微信公众号爬虫接口,可以扩展成基于搜狗搜索的爬虫,返回结果是列表,每一项均是公众号具体信息字典. DouBanSpider [2]- ...

随机推荐

  1. 有哪些关于 Android 开发的博客值得订阅?

    链接:http://www.zhihu.com/question/19788650/answer/60771437来源:知乎 Google 官方[Android Developers Blog](An ...

  2. java中基本输入输出流的解释(flush方法的使用)

    转自:http://fsz521job.itpub.net/post/5606/34827 网络程序的很大一部分是简单的输入输出,即从一个系统向另一个系统移动字节.字节就是字节,在很大程度上,读服务器 ...

  3. Travel Problem[SZU_K28]

    DescriptionAfter SzuHope take part in the 36th ACMICPC Asia Chendu Reginal Contest. Then go to QingC ...

  4. 获取当前的时间,转化为char[]格式unix时间戳

    /* 在这个程序当中实现获取当前的unix时间戳 转化为char[] */ #include<stdio.h> #include<stdlib.h> #include<t ...

  5. BZOJ4320 : ShangHai2006 Homework

    取$M=\sqrt{300000}$. 设$g[i]$表示程序员的$\bmod i$最小的值. 若$Y<M$,那么可以在$O(M)$时间内完成对所有$g[i]$的修改,$O(1)$时间内完成查询 ...

  6. BZOJ1580 : [Usaco2009 Hol]Cattle Bruisers 杀手游戏

    以贝茜为参照物,则贝茜固定于原点,每个杀手是一个圆心在某条射线上的圆. 解出每个杀手可以射杀贝茜的时间区间,然后扫描线即可,时间复杂度$O(n\log n)$. #include<cstdio& ...

  7. windows8 开发教程 教你制作 多点触控Helper可将任意容器内任意对象进行多点缩放

    http://blog.csdn.net/wangrenzhu2011/article/details/7732907 (转) 实现方法: 对Manipulation进行抽象化 使不同容器可共用多点缩 ...

  8. topcoder SRM 592 DIV2 LittleElephantAndPermutationDiv2

    #include <iostream> #include <vector> #include <algorithm> #include <iterator&g ...

  9. ubuntu下新建用户的终端不显示当前路径,不能用上下光标键得到使用过的命名解决办法

    这几天我装ubuntu10.10,xubuntu12.04创建新用户的时候,总会遇到这个问题 就是打开终端的时候,没有路径了,即:xxx@xxx:~$ 找了很久,最后找到了(http://www.os ...

  10. redis运用连接池报错解决

    redis使用连接池报错解决redis使用十几小时就一直报异常 redis.clients.jedis.exceptions.JedisConnectionException: Could not g ...