• python爬虫爬取get请求的页面数据代码样例


    废话不多说,上代码

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    # 导包
    import urllib.request
    import urllib.parse
    # 如下两行代码表示忽略https证书,如果请求不是https则该两行代码可不用。
    import ssl
    ssl._create_default_https_context = ssl._create_unverified_context
    
    if __name__ == "__main__":
        """指定爬取的网页URL"""
        url = 'https://www.baidu.com'
        """通过urlopen函数向指定url发起请求,返回响应对象"""
        response = urllib.request.urlopen(url)
        """通过调用相应对象中的read函数,反馈响应回客户端的数据值(爬到的数据)"""
        data = response.read()  # 获取响应中的数据值(字节类型)
        # data = response.geturl() # 获取请求的url
        # data = response.getcode() # 获取响应状态码
        # data = response.headers() # 获取响应头信息
        # data = str(data, encoding="utf-8")  # 方法一、使用str()函数将bytes类型转换为str类型
        # data = bytes.decode(data)  # 方法二、使用bytes.decode()函数将bytes类型转换为str类型
        data = response.read().decode()  # 方法三、decode()将响应中字节(byte)类型的数据值转成字符串类型
        with open('./baidu.html', 'w') as e:  #使用IO操作将data表示的数据值以'w'权限的方式写入到baidu.html文件中
            e.write(data)
        print('写入文件完毕')
    
    """
    1、爬取网络上某张图片数据,且存储到本地
    if __name__ == '__main__':
        url = 'http://image.baidu.com/search/detail?ct=503316480&z=0&ipn=d&word=%E5%9B%BE%E7%89%87&step_word=&hs=0&pn=5&spn=0&di=103290&pi=0&rn=1&tn=baiduimagedetail&is=0%2C0&istype=0&ie=utf-8&oe=utf-8&in=&cl=2&lm=-1&st=undefined&cs=3139953554%2C3011511497&os=282365737%2C413977936&simid=0%2C0&adpicid=0&lpn=0&ln=737&fr=&fmq=1564044690482_R&fm=&ic=undefined&s=undefined&hd=undefined&latest=undefined&copyright=undefined&se=&sme=&tab=0&width=undefined&height=undefined&face=undefined&ist=&jit=&cg=&bdtype=0&oriquery=&objurl=http%3A%2F%2Fpic30.nipic.com%2F20130619%2F9885883_210838271000_2.jpg&fromurl=ippr_z2C%24qAzdH3FAzdH3Fooo_z%26e3Bgtrtv_z%26e3Bv54AzdH3Ffi5oAzdH3F8AzdH3F9aAzdH3Fbdl0c0lhu9kvac8k_z%26e3Bip4s&gsm=0&rpstart=0&rpnum=0&islist=&querylist=&force=undefined'
        response = urllib.request.urlopen(url)
        data = response.read()  # 因为爬取的是图片数据值(二进制数据),则无需使用decode进行类型转换。
        with open('./bird.jpg', 'wb') as e:  # 视频、图片等流式数据(二进制数据)使用'wb'进行写入
            e.write(data)
        print('写入完毕')
    
    2、爬取使用百度根据指定词条搜索到的页面数据(例如爬取词条为‘蔡徐坤’的页面数据)
    url的特性:url必须为ASCII编码的数据值。所以我们在爬虫代码中编写url时,如果url中存在非ASCII编码的数据值,则必须对其进行ASCII编码后,该url方可被使用
    if __name__ == "__main__":
        #原始url中存在非ASCII编码的值,则该url无法被使用。
        #url = 'http://www.baidu.com/s?wd=蔡徐坤'
        #处理url中存在的非ASCII数据值
        url = 'http://www.baidu.com/s?'
        #将带有非ASCII的数据封装到字典中,url中非ASCII的数据往往都是'?'后面键值形式的请求参数
        param = {
            'wd':'蔡徐坤'
        }
        #使用parse子模块中的urlencode函数将封装好的字典中存在的非ASCII的数值进行ASCII编码
        param = urllib.parse.urlencode(param)
        #将编码后的数据和url进行整合拼接成一个完整可用的url
        url = url + param
        #伪装UA
        #将浏览器的UA数据获取,封装到一个字典中。该UA值可以通过抓包工具或者浏览器自带的开发者工具中获取某请求,从中获取UA的值
        headers={
            'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'
        }
        #自定义一个请求对象
        #参数:url为请求的url,headers为UA的值,data为post请求的请求参数(后续介绍)
        request = urllib.request.Request(url=url,headers=headers)
        #发送我们自定义的请求(该请求的UA已经进行了伪装)
        response = urllib.request.urlopen(request)
        data = response.read()
        with open('./蔡徐坤.html','wb') as e:
            e.write(data)
        print('写入文件完毕')
    
    """
    心态很重要
  • 相关阅读:
    Python 的编码格式
    Python import其他层级的模块
    自己写ORM框架 DBUtils_DG Java(C#的写在链接里)
    C#对象深度克隆
    SpringMVC文件上传下载
    HttpRuntime.Cache .Net自带的缓存类
    Winform跨窗体操作控件(使用委托)
    Winform调用WebKitBrowser,基于chrome内核WebKit的浏览器控件
    ORM框架 EF code first 的封装 优化一
    Go Language 开发环境搭建
  • 原文地址:https://www.cnblogs.com/xiaohailuo/p/11247016.html
Copyright © 2020-2023  润新知