urllib2.HTTPError: HTTP Error 403: Forbidden

来源:互联网 发布:arp攻击软件 编辑:程序博客网 时间:2024/04/29 20:38
 

urllib2.HTTPError: HTTP Error 403: Forbidden

 8612人阅读 评论(2) 收藏 举报
 分类:

[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <span style="font-size:18px;">应用例子:  
  2.   
  3. #coding:utf-8  
  4. import urllib2  
  5.   
  6. request = urllib2.Request('http://blog.csdn.net/nevasun')  
  7.   
  8. #在请求加上头信息,伪装成浏览器访问  
  9. request.add_header('User-Agent','Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6')  
  10.   
  11. opener = urllib2.build_opener()  
  12. f= opener.open(request)  
  13. print f.read().decode('utf-8')  
  14. </span>  


早就有想法把博客每天的访问流量记下来,刚好现在申请了GAE的应用,又开始学Python,正好拿这个练手。打算先利用Python把访问记录保存在本地,熟悉之后可以部署到GAE,利用GAE提供的cron就可以每天更近访问流量了。OK,开始~

首先是简单的网页抓取程序:

[python] import sys, urllib2 
 
req = urllib2.Request("http://blog.csdn.net/nevasun") 
fd = urllib2.urlopen(req) 
while True: 
    data = fd.read(1024) 
    if not len(data): 
        break 
    sys.stdout.write(data) 


在终端运行提示urllib2.HTTPError: HTTP Error 403: Forbidden,怎么回事呢?

这是由于网站禁止爬虫,可以在请求加上头信息,伪装成浏览器访问。添加和修改:

[python] headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'} 
req = urllib2.Request("http://blog.csdn.net/nevasun", headers=headers) 

再试一下,HTTP Error 403没有了,但是中文全都是乱码。又是怎么回事?

这是由于网站是utf-8编码的,需要转换成本地系统的编码格式:

import sys, urllib2 
 
headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'} 
req = urllib2.Request("http://blog.csdn.net/nevasun", headers=headers) 
content = urllib2.urlopen(req).read()   # UTF-8  
 
type = sys.getfilesystemencoding()      # local encode format  
print content.decode("UTF-8").encode(type)  # convert encode format 
import sys, urllib2


OK,大功告成,可以抓取中文页面了。下一步就是在GAE上做个简单的应用了~

1
0
 
 

我的同类文章

  • 判断网络是否连接正常2013-12-18

    参考知识库

    img

    Python知识库

    img

    .NET知识库

    猜你在找
    Python自动化开发基础 分布式监控系统开发实战 day8
    Python自动化开发基础 项目实战-监控系统 Day16
    Python算法实战视频课程--图
    Windows系统内核-保护模式
    Windows CE车载应用的实现与相关技术点
    Tomcat return http status error 403 Reason Phrase Forbidden
    Python 3x 中"HTTP Error 403 Forbidden"问题的解决方案
    使用Visual Studio Development Server开发域验证程序时出现HTTP Error 403 - Forbidden错误的解决办法
    Python 3x 中"HTTP Error 403 Forbidden"问题的解决方案
    各种HTTP返回错误代码大全 HTTP 403 Forbidden 404 Not Found 500 Internal Server Error 502 Bad Gateway 50
    查看评论
    2楼 applebite 2016-01-29 10:32发表 [回复]
    不错
    1楼 zoegogogo 2015-10-23 16:50发表 [回复]
    厉害!成功了!
    * 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    核心技术类目
    全部主题 Hadoop AWS 移动游戏 Java Android iOS Swift 智能硬件 Docker OpenStack VPN Spark ERP IE10Eclipse CRM JavaScript 数据库 Ubuntu NFC WAP jQuery BI HTML5 Spring Apache .NET API HTML SDK IISFedora XML LBS Unity Splashtop UML components Windows Mobile Rails QEMU KDE Cassandra CloudStack FTCcoremail OPhone CouchBase 云计算 iOS6 Rackspace Web App SpringSide Maemo Compuware 大数据 aptech PerlTornado Ruby Hibernate ThinkPHP HBase Pure Solr Angular Cloud Foundry Redis Scala Django Bootstrap
      个人资料
       
      my2010Sam
       
      • 访问:723320次
      • 积分:7825
      • 等级: 
      • 排名:第2034名
      • 原创:189篇
      • 转载:201篇
      • 译文:1篇
      • 评论:43条
      文章分类
    • python(92)
    • database(27)
    • 环境搭建(6)
      文章存档
    • 2016年09月(1)
    • 2016年08月(4)
    • 2016年07月(4)
    • 2016年06月(3)
    • 2016年05月(1)
      展开
    <div class="panel" id="hotarticls" style="margin: 0px 0px 10px; padding: 1px; border%
    0 0
    原创粉丝点击