2017年4月23日星期日
2017年4月18日星期二
PHP数据采集方法
前言
我们在写一个Web程序的时候,总会想着把自己的网站更美观一些,功能能更多一些,有时候写一些小的工具或者加上小的插件会让我们的站点更加完善。比如万年历功能,比如我们现在要讲的天气预报功能。
当然我们没法利用专业的卫星接受数据,所以我们的天气数据来自现有的天气预报网站。利用天气预报网站提供的数据服务,我们可以写一个PHP爬虫,然后动态采集我们所需要的数据,并且在目标站点更新数据的时候,我们的程序也能做到同步更新,自动地获取数据。
下面就介绍一下如何编写一个简单的PHP数据采集程序(PHP爬虫)。
原理
给定一个网页的URL,使用PHP下载该网页并得到网页内容,然后通过正则表达式将其中我们感兴趣的数据提取出来,然后输出。
具体在这个例子中,我们要抓取的网页是
http://www.weather.com.cn/weather/101050101.shtml
,我们感兴趣的是页面中的未来7天天气情况。实现
0.获取天气预报网页的URL:
$url = "http://www.weather.com.cn/weather/101050101.shtml";
$page_content = file_get_contents($url);
在这里,
file_get_contents()
函数会将 $url
指向的网页下载下来,并把网页内容作为一个字符串返回。于是,$page_content
变量中就是我们要抓取的网页的全部HTML代码了。接下来,我们要从其中抽取我们需要的数据。1.使用正则表达式匹配符合条件的字符串
先输出
$page_content
的值,然后查看网页源代码,观察可知我们需要的字符串可以在
......
这两行的注释里找到。
使用正则表达式来取得
和
之间的所有内容:eregi("(.*)",$page_content,$res);
2.补全页面中图片的路径
由于远程网页中的图片路径都是像
/m2/i/icon_weather/29x20/d01.gif
这样的相对路径,我们需要把这些路径补全,在它们前面加上 http://www.weather.com.cn
。$forecast = str_replace("
至此,
$forecast
中就是我们需要的天气预报信息了。这个简单的PHP爬虫也就写好了。源代码
以下是这个抓取天气预报小程序的完整源代码,其中添加了一些测量各部分程序运行时间的代码,并可以通过设置
$start
和 $end
的值来控制抓取哪几天的信息。
$url = "http://www.weather.com.cn/weather/101050101.shtml";
$t1 = time();
$page_content = file_get_contents($url);
$t2 = time();
$start = 1;
$end = 3;
if ($end > 7){
echo "超出预报能力范围,请重新设置!";
}else {
echo "未来".($end-$start)."天哈尔滨的天气预报("
.date('Y-m-j')."发布)";
eregi("--day $start--(.*)--day $end--", $page_content, $res);
$forecast = str_replace(",
", $res[0]);
$t3 = time();
echo $forecast;
echo 'First step costs '.($t2 - $t1).' ms.';
echo 'Last step costs '.($t3 - $t2).' ms.';
}
其他应用例子
同样的思路可以尝试的有:NBA每天的比分牌、今日新闻同步、股市行情等等,都能实现同步实时更新。
2017年4月12日星期三
新加坡10大在线购物网站
新加坡电子商务也正在迅猛发展,下面是10大在线购物网站介绍:
1. Qoo10.sg
Qoo10的前身是Gmarket在新加坡的分站,Gmarket发源于韩国,是韩国Giosis Gmarket和eBay合作的产品,在日本等地也有分站。Qoo10是一个在新加坡排名第一综合性的B2C (Business tocustomer)平台,相当于新加坡的“淘宝”。销售商品类别十分广泛,如:服装、化妆品、数码电子、母婴用品、保健品、食品等。为了培养顾客的忠诚度,Qoo10几乎每天都有促销和折扣等活动。
据了解,Qoo10上的商家并不都在新加坡本地,所以在Qoo10上购物的送货方式和到货时间都有很大不同。
2. Zalora.sg
Zalora是成立于2012年的时尚服饰电商平台,并且一直在扩张,得到了来自TengelmannGroup, Access Industries等投资方的多次投资。
除了这种B2C模式的平台,Zalora还推出了C2C平台,专门为一些第三方小商家服务。目前Zalora的业务已经拓展到了印度尼西亚、菲律宾和越南等地。
Zalora的平台优势在于专售品质好的服装并且价格公道,每天都会有上百件新品发布,其中包含了众多的知名品牌,如:Topshop, New Look, Mango, River Island, Daniel Wellington, Adidas,Nike…Zalora最受买家青睐的一点是可以免费30天内无理由退货,连运费都不用付。
3. Lazada.sg
Lazada是成立于2012年在东南亚各地开设的B2C电商平台,分别在印度尼西亚、越南、马来西亚、泰国与菲律宾开设了电子商务服务,2014年正式进军新加坡。
该平台为消费者提供各类商品,包括保健美容、家居生活与电子产品等,产品涵盖面积十分广泛。Lazada销售的商品以高大上著称,所以对卖家要求非常严格,卖家收到订单后需在48小时内发货,否则系统将会自动退款给顾客,并且会处以卖家相应的罚款,因此物流速度上服务非常好,吸引了众多的顾客。
4. www.maxmarket.sg
Maxmarket主攻韩国美容护肤品,各大主流韩国品牌到二线品牌都有。免了网络个人代购有时信用不足或假货的问题。
支持paypal用户付款,非paypal用户可以选择debit card 或者credit card付款方式,再进行宅配,线上购买三个工作日内送货上门。
支持paypal用户付款,非paypal用户可以选择debit card 或者credit card付款方式,再进行宅配,线上购买三个工作日内送货上门。
5.redmart.com
Redmart和超市差不多,也是销售各种零售杂货,包括家居用品和蔬菜等。经常有各种折扣码和优惠,记得输。
6.sg.carousell.com
Carousell是一个C2C模式的移动购物APP,是新加坡最受欢迎的二手交易平台,从2012年成立以来,APP上已经上传了50万件商品,得到了来自日本乐天的80万美元投资,目前正准备扩张到马来西亚和印度尼西亚。
7.reebonz.com.sg
Reebonz主要销售打折奢侈品,比如高端手包、奢侈品旅行包、鞋子等。除了在线下单,Reebonz也经常举办线下的特卖会。
8. 1030am.com
成立于2015年的时尚闪购电商网站,网站域名寓意就是每天上午十点半都有低价折扣品牌商品上线。
网站走轻奢路线, 主打轻奢品牌包包,欧美日韩的化妆品。因为采用海外买手大宗采购模式,所以价格非常有竞争力。
1030AM刚推出不久就深受本地年轻人群的喜爱,因为这些包包和化妆品绝对是正品,而且价格基本都是本地最低的。
9.www.ezbuy.sg
作为完美主义强迫症的作者,本来想凑足十大电商就够了。但是,还有一个与上面完全不同的网站必须要提。从中国和美国代购的神器啊。
65代购是新加坡成立最早的专业代购公司,成立于2009年,至今已服务超过50万新加坡生活的朋友,可以帮全球购。从主攻淘宝到兼营美国代购,据说现在是几百人的大公司!据说新加坡眼上偶尔露面的一个低调美食作者在他们里面做程序猿(超级资深那种)。
10. PIABIA http://piabia.com.sg
其实这不是一个纯电商网站,但是能买到PIABIA独家最低价购买到的淘宝和京东上的商品。用户在PIABIA不仅能买到高性价比的衣物而且还能买到各种电子产品和玩具。PIABIA的APP也上线了,还能给新加坡三家电信公司的预付卡充值。
订阅:
博文 (Atom)