美文网首页
urllib2模块的基本使用

urllib2模块的基本使用

作者: 噫树 | 来源:发表于2017-07-27 22:27 被阅读61次

    刚接触Python爬虫,首先使用的urllib2这个库,记录下使用的要点。由于是初学,有不对的地方等发现了再来更正~ *
    使用的Python3.6的urllib2模块(urllib2.request)
    在Python2.x中就是urllib2

    urlopen :

    向指定的URL发送请求,并返回服务器响应的文件对象
    例:

    import urllib2.repuest
    
    respose = urllib2.repuest.urlopen("http://www.baidu.com")
    
    #类文件对象支持 文件对象的操作方法,可以用read()方法读取全部内容
    html = respose.read()
    #打印输出
    print(html)
    
    • 这样就把网页的全部数据都爬下来了,是不是很简单 😆

    但是如果需要执行更复杂的操作,比如增加HTTP爆头,就需要创建一个Request 实例来作为urlopen()的参数
    在urlopen()之前 先使用Request()

    #Request实例对象
    request = urllib2.request.Request("http://www.baidu.com")
    #然后再使用urlopen()
    response = urllib2.request.urlopen(request)
    

    Request实例,除了必要的url参数,还有两个可选的参数
    data(默认空):url携带提交的数据,
    headers(默认空):包含需要发送的http报头的键值对,字典格式

    User-Agent

    但是这样直接用urllib2给一个网站发送请求的话,确实略有些唐突了,就好比,人家每家都有门,你以一个路人的身份直接闯进去显然不是很礼貌。而且有一些站点不喜欢被程序(非人为访问)访问,有可能会拒绝你的访问请求。

    但是如果我们用一个合法的身份去请求别人网站,显然人家就是欢迎的,所以我们就应该给我们的这个代码加上一个身份,就是所谓的User-Agent头

    • 说白了 就是让我们利用给出的参数,伪造成各式各样浏览器发送数据的样子,骗过服务端的检查。
    import urllib2.request
    
    url = "http://www.baidu.com"
    
    #IE 9.0 的 User-Agent,包含在 ua_header里
    ua_header = {"User-Agent" : "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;"} 
    
    #  url 连同 headers,一起构造Request请求,这个请求将附带 IE9.0 浏览器的User-Agent
    request = urllib2.request.Request(url, headers = ua_header)
    
    # 向服务器发送这个请求
    response = urllib2.urlopen(request)
    
    html = response.read()
    print(html)
    
    这样我们就可以通过Python自带的urllib2模块来完成一个小爬虫了,而且还使用了User-Agent模拟了浏览器的访问,骗过了服务端。哈哈(小白式大笑...hhh)

    相关文章

      网友评论

          本文标题:urllib2模块的基本使用

          本文链接:https://www.haomeiwen.com/subject/igetlxtx.html