利用百度应用引擎(BAE)抓取百度信息过程

21 篇文章 0 订阅
21 篇文章 0 订阅
本文介绍了如何利用百度应用引擎(BAE)来规避网站访问限制,特别是抓取百度自身内容的过程。通过注册百度账号,创建并上传包含抓取程序的web应用,配置fetcher.php和app.conf文件,最后将程序部署到BAE,可以实现由百度集群作为代理进行内容抓取。在Python中,可以通过urllib2库调用应用URL来获取抓取的数据。
摘要由CSDN通过智能技术生成

每个大网站都会限制蜘蛛的访问频率,一旦发现那么对应蜘蛛所在IP就会被封锁一段时间


如何应对这种问题发生呢?有几个方法

1,程序中使用代理,即使被封仍可让服务使用其它代理抓取内容,目前基本都采用这种方法,毕竟网上可以找好多代理,唯一需要调整的策略就是代理的选择与更新

2,使用对应网站提供的接口抓取,例如用百度的BAE来部署抓取百度自身内容程序,因为程序是对集群操作,所以可以当成天然的代理使用(唯一不知道是否百度也会对自身集群进行IP封锁)


如下我仅说明一下2的方法过程:


1,注册百度帐号

2,进入百度开放平台: http://developer.baidu.com/bae

3,右上角“快速创建应用”

4,创建web应用,例如应用名称为your_app_name

5,上传本地写好的蜘蛛程序:例如baidu.zip(下列文件内容)

6,上线测试



baidu 文件夹下有如下文件

1,fetcher.php

<?php
//确定url
if(isset($_GET['url'])){
$url = urldecode($_GET['url']);
}else{
echo "url empty!";
return;
}

//设置抓取选项
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
//curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
//开始抓取
$chData = curl_exec($ch);
if (!curl_errno($ch)) {
$info = curl_getinfo($ch);
curl_setopt($ch, CURLOPT_URL, "http://blog.csdn.net/timegoesby001");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_exec($ch);
  //echo 'fecthurl test ' . $info['url'];
  //返回内容
echo $chData;
} else {
  echo 'Curl error: ' . curl_error($ch);
}
//结束抓取
curl_close($ch);
?>


app.conf内容如下


handlers:
  - url : ^/s
    script: fetcher.php
   - url : /(.*)
    script: index.php /内容可与fetcher.php一致 

  - expire : .jpg modify 10 years
  - expire : .swf modify 10 years
  - expire : .png modify 10 years
  - expire : .gif modify 10 years
  - expire : .JPG modify 10 years
  - expire : .ico modify 10 years


然后然baidu文件夹打成baidu.zip上传到BAE平台上

上线即可

比如你用python中的urllib2.open来打开url地址那么可以

直接在python程序中使用data = urllib2.urlopen("http://your_app_name.duapp.com/s?url=your_url_address").read()

这样data中即为百度集群帮你抓取的内容





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值