• python使用urllib2抓取网页


    1、使用python的库urllib2,用到urlopen和Request方法。

    2、方法urlopen原形

    urllib2.urlopen(url[, data][, timeout])

    其中:

    url表示目标网页地址,可以是字符串,也可以是请求对象Request

    data表示post方式提交给目标服务器的参数

    timeout表示超时时间设置

    改方法返回一个类似文件的对象,有geturl()、info()、read()方法其中geturl()返回连接地址,info()返回网页信息。

    要获取网页内容可以使用read()方法,read也可以带参数,表示读取内容的大小(字节)。

    例子:


    1. >>> import urllib2  
    2. >>> socket = urllib2.urlopen("http://www.baidu.com")  
    3. >>> content = socket.read()  
    4. >>> socket.close()  

    这样,网页的内容(content)就爬下来了,但是有些网站禁止爬虫,如果直接请求会出现以下错误:

    urllib2.HTTPError: HTTP Error 403: Forbidden

    解决方法是可以在请求加上头信息,伪装成浏览器的访问行为,需要用到Request方法:

    3、方法Request原型

    urllib2.Request(url[, data][, headers][, origin_req_host][, unverifiable])

    其中:

    url表示目标网页地址,可以是字符串,也可以是请求对象Request

    data表示post方式提交给目标服务器的参数

    headers表示用户标识,是一 个字典类型的数据,有些不允许脚本的抓取,所以需要用户代理,像火狐浏览器的代理就是类似:Mozilla/5.0 (X11; U; Linux i686)Gecko/20071127 Firefox/2.0.0.11 浏览器的标准UA格式为:浏览器标识 (操作系统标识; 加密等级标识; 浏览器语言) 渲染引擎标识 版本信息 ,headers默认是Python-urllib/2.6

    origin_req_host表示请求方的主机域名或者ip地址

     

    看一个例子:

    1. >>> headers = {'User-Agent':'Mozilla/5.0 (X11; U; Linux i686)Gecko/20071127 Firefox/2.0.0.11'}  
    2. >>> req = urllib2.Request(url="http://blog.csdn.net/deqingguo",headers=headers)  
    3. >>> socket = urllib2.urlopen(req)  
    4. >>> content = socket.read()  
    5. >>> socket.close()  

     列子2:

     import urllib2 as ul
    url = 'http://www.dd.com/products?selected.classification=Primary+antibodies&selected.researchAreas=Metabolism--Types+of+disease--Cancer'
    headers = {'User-Agent':'Mozilla/5.0 (X11; U; Linux i686)Gecko/20071127 Firefox/2.0.0.11'}  
    
    req = ul.Request(url,headers=headers)  
    f = ul.urlopen( req )
    content = f.read();
    
    print f.getcode();
    
      1. <pre></pre>  
      2. <p></p>  
      3. <pre></pre> 
  • 相关阅读:
    【卷积】卷积的理解
    【cs231n】神经网络学习笔记3
    【cs231n】神经网络笔记笔记2
    【cs231n】神经网络学习笔记1
    【cs231n】卷积神经网络
    【cs231n】反向传播笔记
    【cs231n】最优化笔记
    【cs231n】图像分类笔记
    【cs231n】线性分类笔记
    关于struts中Ognl和iterator配合再次理解
  • 原文地址:https://www.cnblogs.com/legend-song/p/4533446.html
Copyright © 2020-2023  润新知