zoukankan      html  css  js  c++  java
  • urllib模块

    urllib模块


    urllib模块是python中自带的一个基于爬虫的模块。可以使用代码模拟浏览器发起请求

    # 需求:爬取搜狗首页的页面数据
    
    import urllib.request
    
    #1.指定url
    url = 'https://www.sogou.com/'
    
    #2.发起请求:urlopen可以根据指定的url发起请求,切返回一个响应对象
    response = urllib.request.urlopen(url=url)
    
    #3.获取页面数据:read函数返回的就是响应对象中存储的页面数据(byte)
    page_text = response.read()
    
    #4.持久化存储
    with open('./sougou.html','wb') as fp:
        fp.write(page_text)
        print('写入数据成功')
    # 需求:爬取指定词条所对应的页面数据
    
    import urllib.request
    import urllib.parse
    
    #指定url
    url = 'https://www.sogou.com/web?query='
    #url特性:url不可以存在非ASCII编码的字符数据
    word = urllib.parse.quote("人民币")
    url += word #有效的url
    
    #发请求
    response = urllib.request.urlopen(url=url)
    
    
    #获取页面数据
    page_text = response.read()
    
    
    with open('renminbi.html','wb') as fp:
        fp.write(page_text)

     反爬机制:网站检查请求的UA,如果发现UA是爬虫程序,则拒绝提供网站数据。

    User-Agent(UA):请求载体的身份标识。

    反反爬机制:伪装爬虫程序请求的UA

    import urllib.request
    
    url = 'https://www.baidu.com/'
    
    #UA伪装
    #1.子制定一个请求对象
    headers = {
        #存储任意的请求头信息
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36'
        
    }
    #该请求对象的UA进行了成功的伪装
    request = urllib.request.Request(url=url,headers=headers)
    
    #2.针对自制定的请求对象发起请求
    response = urllib.request.urlopen(request)
    
    print(response.read())

    urlib模块发起的post请求

    • 需求:爬取百度翻译的翻译结果
    import urllib.request
    import urllib.parse
    
    #1.指定url
    url = 'https://fanyi.baidu.com/sug'
    
    #post请求携带的参数进行处理  流程:
    #1.将post请求参数封装到字典
    data = {
        'kw':'西瓜'
    }
    #2.使用parse模块中的urlencode(返回值类型为str)进行编码处理
    data = urllib.parse.urlencode(data)
    #3.将步骤2的编码结果转换成byte类型
    data = data.encode()
    
    #2.发起post请求:urlopen函数的data参数表示的就是经过处理之后的post请求携带的参数
    response = urllib.request.urlopen(url=url,data=data)
    
    response.read()
  • 相关阅读:
    优麒麟(UbuntuKylin)不是国产Linux操作系统
    Win10開始菜单打不开
    五步让你玩转CocoaPods
    设计模式学习笔记之适配器模式
    感谢各位亲们的大力支持,免费的HTML5学习课程《HTML5网页开发实例具体解释》连载已经结束了!
    iOS获取时间、日期
    leetcode NO.1 两数之和 (python3实现)
    leetcode NO.53 最大子序列和 (python3实现)
    [笔记]《算法图解》第六章 广度搜索优先
    [笔记]《算法图解》第四章 快速排序
  • 原文地址:https://www.cnblogs.com/Xuuuuuu/p/10751255.html
Copyright © 2011-2022 走看看