• python 爬虫 urllib模块介绍


    一.urllib库

      概念:urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求。其常被用到的子模块在Python3中的为urllib.request和urllib.parse,在Python2中是urllib和urllib2。

         使用流程:

    • 指定url
    • 针对指定的url发起请求 (基于urllib的request子模块发起请求)
    • 获取服务器响应回来的页面数据
    • 持久化存储 (可以把页面数据存到数据库,或者存到本地磁盘)

    1.第一个简单的爬虫程序:爬取搜狗首页的页面数据

    import urllib.request
    
    
    # 1.指定url
    url = 'https://www.sogou.com/'
    
    '''
    2.发起请求:使用urlopen函数对指定的url发起请求,
    该函数返回一个响应对象,urlopen代表打开url
    '''
    response = urllib.request.urlopen(url=url)
    
    # 3.获取响应对象中的页面数据:read函数可以获取响应对象中存储的页面数据(byte类型的数据值)
    page_text = response.read()
    
    # 4.持久化存储:将爬取的页面数据写入文件进行保存
    with open("sougou.html","wb") as f:
        f.write(page_text)
        print("写入数据成功")
        f.close()

     生成一个html文件,把爬取数据写入到文件里

    urlib模块urlopn方法说明:

    urlopen函数原型:
        urllib.request.urlopen(url, data=None, timeout=<object object at 0x10af327d0>, *, cafile=None, capath=None, cadefault=False, context=None)
    
    在上述案例中我们只使用了该函数中的第一个参数url。在日常开发中,我们能用的只有url和data这两个参数。
    
    url参数:指定向哪个url发起请求
    data参数:可以将post请求中携带的参数封装成字典的形式传递给该参数(暂时不需要理解,后期会讲)
    
    urlopen函数返回的响应对象,相关函数调用介绍:
    response.headers():获取响应头信息
    response.getcode():获取响应状态码
    response.geturl():获取请求的url
    response.read():获取响应中的数据值(字节类型)

      2.二进制数据的爬取:爬取网络上的某张图片数据,且存储到文件

    import urllib.request
    
    # 1.指定url
    url = 'https://pic.qiushibaike.com/system/pictures/12112/121121212/medium/ZOAND29U4NKNEWEF.jpg'
    
    '''
    2.发起请求:使用urlopen函数对指定的url发起请求,
    该函数返回一个响应对象,urlopen代表打开url
    '''
    response = urllib.request.urlopen(url=url)
    # 3.获取响应对象中的图片二进制类型的数据
    img_data = response.read()
    # 4.持久化存储:将爬取的图片写入本地进行保存
    with open('./tupian.png','wb') as fp:
        fp.write(img_data)
        fp.close()

    生成图片文件

     
  • 相关阅读:
    Mac 或者 iMac 上传应用到appStore 提交失败
    iOS 上传AppStore 被拒汇总
    iOS 最新修改项目名称
    iOS 之 Cocoa框架
    iOS 之 UIKit框架
    iOS 之 Core Animation
    iOS之Block
    单例模式
    js 关于日期
    利用卷积神经网络对大规模可穿戴传感器数据进行运动分类
  • 原文地址:https://www.cnblogs.com/mingerlcm/p/11335813.html
Copyright © 2020-2023  润新知