zoukankan      html  css  js  c++  java
  • Python爬虫设置Headers

    Python设置Headers

    import urllib  
    import urllib2  
    
    url = 'http://www.server.com/login'
    user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'  
    values = {'username' : 'cqc',  'password' : 'XXXX' }  
    headers = { 'User-Agent' : user_agent }  
    data = urllib.urlencode(values)  
    request = urllib2.Request(url, data, headers)  
    response = urllib2.urlopen(request)  
    page = response.read() 
    

      

    这样,我们设置了一个headers,在构建request时传入,在请求时,就加入了headers传送,服务器若识别了是浏览器发来的请求,就会得到响应。

    另外,我们还有对付”反盗链”的方式,对付防盗链,服务器会识别headers中的referer是不是它自己,如果不是,有的服务器不会响应,所以我们还可以在headers中加入referer

    例如我们可以构建下面的headers

    headers = {
        'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)',
        'Referer': 'http://www.zhihu.com/articles'
    }

    另外headers的一些属性,下面的需要特别注意一下:

    1. User-Agent : 有些服务器或 Proxy 会通过该值来判断是否是浏览器发出的请求
    2. Content-Type : 在使用 REST 接口时,服务器会检查该值,用来确定 HTTP Body 中的内容该怎样解析。
    3. application/xml : 在 XML RPC,如 RESTful/SOAP 调用时使用
    4. application/json : 在 JSON RPC 调用时使用
    5. application/x-www-form-urlencoded : 浏览器提交 Web 表单时使用
    6. 在使用服务器提供的 RESTful 或 SOAP 服务时, Content-Type 设置错误会导致服务器拒绝服务

     异常抛出

    import urllib  
    import urllib2  
    
    url = 'http://www.server.com/login'
    user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'  
    values = {'username' : 'cqc',  'password' : 'XXXX' }  
    headers = { 'User-Agent' : user_agent }  
    data = urllib.urlencode(values)  
    request = urllib2.Request(url, data, headers)  
    
    try:
       response = urllib2.urlopen(request)  
    except urllib2.HTTPError, e:
        print e.code
        print e.reason
        
    page = response.read() 
    

      

  • 相关阅读:
    静态库中的静态变量连接失败的解决
    (转)Virtual PC 2007虚拟网络设置
    (zt)iPhone Developer注册
    (zt)正则表达式30分钟入门教程
    (zt)Flex SDK 3.2和Flex Builder 3.0.2升级
    (转)完成端口之性能优化
    (摘)法拉利年代型号
    安装windows下的NDS开发环境
    [C#]小问题
    javascript "未结束字符串"
  • 原文地址:https://www.cnblogs.com/zeze/p/6708018.html
Copyright © 2011-2022 走看看