zoukankan      html  css  js  c++  java
  • urllib2.HTTPError: HTTP Error 403: Forbidden 分类: urllib2 2013-12-18 17:52 3886人阅读 评论(0) 收藏

    应用例子:
    
    #coding:utf-8
    import urllib2
    
    request = urllib2.Request('http://blog.csdn.net/nevasun')
    
    #在请求加上头信息,伪装成浏览器访问
    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')
    
    opener = urllib2.build_opener()
    f= opener.open(request)
    print f.read().decode('utf-8')
    


    早就有想法把博客每天的访问流量记下来,刚好现在申请了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上做个简单的应用了~

  • 相关阅读:
    evernote100个做笔记的好方法
    平衡二叉树的调整模版
    晨间日记的奇迹
    hdu 2952 Counting Sheep
    hdu 1535 Invitation Cards
    poj 3259 Wormholes(spfa)
    poj 2263 Heavy Cargo(floyd)
    poj 3268 Silver Cow Party(SPFA)
    hdu 1690 Bus System
    hdu 3631 Shortest Path(Floyd)
  • 原文地址:https://www.cnblogs.com/think1988/p/4627988.html
Copyright © 2011-2022 走看看