精华内容
下载资源
问答
  • python网页请求模块urllib2进行简单的封装。 例子: 复制代码 代码如下:#!/usr/bin/python#coding: utf-8import base64import urllibimport urllib2import time class SendRequest: ”’ This class use to set ...
  • python程序怎么封装为可被网页调用的接口?或者有什么其他方法吗?web是用Java写的。
  • python爬虫封装1

    2018-08-13 21:41:12
    # 返回网页代码 html = result.read() except HTTPError as f: print(f) except URLError as f: print(f) return html # 调试 if __name__ == '__main__': url = 'http://fanyi.baidu.com/sug' form = { '...
    from urllib import request,parse
    from urllib.error import HTTPError,URLError
    import json
    # get请求
    def get(url,headers = None):
        return urlrequests(url,headers=headers)
    # post请求
    def post(url,form=None,headers=None):
        # 解析json
        res_dict = json.loads(urlrequests(url,form,headers=headers).decode('utf-8'))
        return res_dict
    def urlrequests(url,form = None,headers=None):
        user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
        if headers == None:
            headers = {
                'User-Agent':user_agent
            }
        html = b''
        try:
            if form:
                # 转换成str
                form_str = parse.urlencode(form)
                #转换成字节
                form_mm = form_str.encode('utf-8')
                # 发送post请求
                response = request.Request(url,data = form_mm,headers=headers)
    
            else:
                # 发送请求
                response = request.Request(url,headers=headers)
            # 返回请求的结果
            result = request.urlopen(response)
            # 返回网页代码
            html = result.read()
        except HTTPError as f:
            print(f)
        except URLError as f:
            print(f)
        return html
    # 调试
    if __name__ == '__main__':
        url = 'http://fanyi.baidu.com/sug'
        form = {
            'kw': '呵呵'
        }
        html_bytes = post (url, form=form)
        print(html_bytes)
        # url = 'http://www.baidu.com'
        # res = urlrequests(url)
        # print(res.decode('utf-8'))
    
    展开全文
  • python网页请求urllib2模块简单封装

    千次阅读 2011-12-12 10:52:19
    /usr/bin/python #coding: utf-8 import base64 import urllib import urllib2 import time class SendRequest: ''' This class use to set and request the http, and get the info of response. e.g. s
    #!/usr/bin/python
    #coding: utf-8
    import base64
    import urllib
    import urllib2
    import time
    
    
    
    class SendRequest:
      '''
      This class use to set and request the http, and get the info of response.
      e.g. set Authorization Type, request tyep..
      e.g. get html content, state code, cookie..
      SendRequest('http://10.75.0.103:8850/2/photos/square/type.json', 
                  data='source=216274069', type='POST', auth='base',
    			  user='zl2010', password='111111')
      '''
      def __init__(self, url, data=None, type='GET', auth=None, user=None, password=None, cookie = None, **header):
        '''
        url:request, raise error if none
        date: data for post or get, must be dict type
        type: GET, POST
        auth: option, if has the value must be 'base' or 'cookie'
        user: user for auth
        password: password for auth
        cookie: if request with cookie 
        other header info: 
        e.g. referer='www.sina.com.cn'    
        '''
        self.url = url
        self.data = data
        self.type = type
        self.auth = auth
        self.user = user
        self.password = password 
        self.cookie = cookie 
          
        if 'referer' in header:
          self.referer = header[referer]
        else:
          self.referer = None
          
        if 'user-agent' in header:
          self.user_agent = header[user-agent]
        else:
          self.user_agent = None
        
        self.setup_request()
        self.send_request()	
    
      def setup_request(self):
        '''
        setup a request 
        '''
        if self.url == None or self.url == '':
          raise 'The url should not empty!'
      
        # set request type 
        #print self.url
        #print self.type
        #print self.data
        #print self.auth
        #print self.user
        #print self.password  
        if self.type == 'POST':	
          self.Req = urllib2.Request(self.url, self.data)
        elif self.type == 'GET':
          if self.data == None:
              self.Req = urllib2.Request(self.url)
          else:
            self.Req = urllib2.Request(self.url + '?' + self.data)
        else:
          print 'The http request type NOT support now!'
        
        ##set auth type 
        if self.auth == 'base':
          if self.user == None or self.password == None:
            raise 'The user or password was not given!'
          else:
            auth_info = base64.encodestring(self.user + ':' + self.password).replace('\n','')
            auth_info = 'Basic ' + auth_info 
            #print auth_info		
            self.Req.add_header("Authorization", auth_info)
        elif self.auth == 'cookie':
          if self.cookie == None:
            raise 'The cookie was not given!'
          else:
            self.Req.add_header("Cookie", self.cookie) 
        else:
          pass    ##add other auth type here 
    
        ##set other header info 
        if self.referer:
          self.Req.add_header('referer', self.referer)
        if self.user_agent:
          self.Req.add_header('user-agent', self.user_agent)
          
          
      def send_request(self):  
        '''
        send a request 
        '''
        # get a response object 
        try:
          self.Res = urllib2.urlopen(self.Req)
          self.source = self.Res.read()
          self.goal_url = self.Res.geturl()
          self.code = self.Res.getcode()
          self.head_dict = self.Res.info().dict
          self.Res.close()
        except urllib2.HTTPError, e:
          self.code = e.code
          print e
            
    
      def get_code(self):
        return self.code
        
      def get_url(self):
        return self.goal_url
        
      def get_source(self):        
        return self.source
        
      def get_header_info(self):
        return self.head_dict
    
      def get_cookie(self):
        if 'set-cookie' in self.head_dict:
          return self.head_dict['set-cookie']
        else:
          return None    
          
      def get_content_type(self):
        if 'content-type' in self.head_dict:
          return self.head_dict['content-type']
        else:
          return None
        
      def get_expires_time(self):
        if 'expires' in self.head_dict:
          return self.head_dict['expires']
        else:
          return None    
        
      def get_server_name(self):
        if 'server' in self.head_dict:
          return self.head_dict['server']
        else:
          return None   
          
      def __del__(self):
        pass   
    
    __all__ = [SendRequest,]
          
    if __name__ == '__main__':
      '''
      The example for using the SendRequest class 
      '''
      value = {'source':'216274069'}
      data = urllib.urlencode(value)
      url = 'http://10.75.0.103:8850/2/photos/square/type.json'
      user = 'wz_0001'
      password = '111111'
      auth = 'base'
      type = 'POST'
      t2 = time.time()
      rs = SendRequest('http://www.google.com')
      #rs = SendRequest(url, data=data, type=type, auth=auth, user=user, password=password)
      print 't2: ' + str(time.time() - t2)
      print '---------------get_code()---------------'
      print rs.get_code()
      print '---------------get_url()---------------'
      print rs.get_url()
      print '---------------get_source()---------------'
      print rs.get_source()
      print '---------------get_cookie()---------------'
      print rs.get_cookie()
      rs = None


    展开全文
  • python3封装Api接口

    2018-08-13 16:37:00
    注:本篇的代码和语法基于Python3.5环境,下面将用到Python 的Flask框架 封装接口主要讲静态接口(无参数传入)、动态接口(有参数传入,不同参数返回的信息不同)。针对动态接口有三种传参方式:key_value、json串...

    注:本篇的代码和语法基于Python3.5环境,下面将用到Python 的Flask框架

    封装接口主要讲静态接口(无参数传入)、动态接口(有参数传入,不同参数返回的信息不同)。针对动态接口有三种传参方式:key_value、json串和拼接方式入参

     

      • 一、封装成无参数传入的接口
        from flask import Flask,jsonify,request
        data = {'huhy':{'age':24,'sex':'女'},
                'liuer':{'age':12,'sex':'男'}
                }
        app = Flask(__name__)#创建一个服务,赋值给APP
        @app.route('/get_user',methods=['post'])#指定接口访问的路径,支持什么请求方式get,post
        #讲的是封装成一种静态的接口,无任何参数传入
        def get_user():#-----这里的函数名称可以任意取
            return  jsonify(data)#把字典转成json串返回
        
        app.run(host='0.0.0.0',port=8802,debug=True)
        #这个host:windows就一个网卡,可以不写,而liux有多个网卡,写成0:0:0可以接受任意网卡信息,
         通过访问127.0.0.1:8802/get_user,可返回data信息
        #debug:调试的时候,可以指定debug=true;如果是提供接口给他人使用的时候,debug要去掉
        接口返回的截图如下:



      • 二、有参数传入的接口
         1.通过key_value方式传参
        from flask import Flask,jsonify,request
        data = {'huhy':{'age':24,'sex':'女'},
                'liuer':{'age':12,'sex':'男'}
                }
        err = {'zz':404,
               'yy':502
               }
        app = Flask(__name__)#创建一个服务,赋值给APP
        @app.route('/get_user',methods=['post'])#指定接口访问的路径,支持什么请求方式get,post
        
        # key_values方式传参
        def get_user():
            username = request.form.get('username')#获取接口请求中form-data的username参数传入的值
            if username in data:#判断请求传入的参数是否在字典里
                return jsonify(data[username])
        #如果在的话,则返回data对应key的值转成的json串信息
            else:
                return jsonify(err[username])
        #如果不在的话,返回err对应key的value转成的json串信息
        
        app.run(host='0.0.0.0',port=8802,debug=True)
        #这个host:windows就一个网卡,可以不写,而liux有多个网卡,写成0:0:0可以接受任意网卡信息
        #通过访问127.0.0.1:8802/get_user,form—data里输入username参数,则可看到返回信息
        

        接口返回的截图如下:



        2.通过json串方式传参
        from flask import Flask,jsonify,request
        data = {'huhy':{'age':24,'sex':'女'},
                'liuer':{'age':12,'sex':'男'}
                }
        err = {'zz':404,
               'yy':502
               }
        app = Flask(__name__)#创建一个服务,赋值给APP
        @app.route('/get_user',methods=['post'])#指定接口访问的路径,支持什么请求方式get,post
        
        #json方式传参
        def get_ss():
            username = request.json.get('username1')#获取带json串请求的username参数传入的值
            if username in data:  # 判断请求传入的参数是否在字典里
                return jsonify(data[username])
        #如果在的话,则返回data对应key的值转成的json串信息
            else:
                return jsonify(err[username])
        #如果不在的话,返回err对应key的value转成的json串信息
        app.run(host='0.0.0.0',port=8802,debug=True)
        #这个host:windows就一个网卡,可以不写,而liux有多个网卡,写成0:0:0可以接受任意网卡信息
        #通过访问127.0.0.1:8802/get_user,form—data里输入username参数,则可看到返回信息
        接口返回的截图如下:



        3.请求链接直接拼接入参方式
        from flask import Flask,jsonify,request
        data = {'huhy':{'age':24,'sex':'女'},
                'liuer':{'age':12,'sex':'男'}
                }
        err = {'zz':404,
               'yy':502
               }
        app = Flask(__name__)#创建一个服务,赋值给APP
        @app.route('/get_user',methods=['post'])#指定接口访问的路径,支持什么请求方式get,post
        
        #请求后直接拼接入参方式
        def get_ss():
            username = request.args.get('username')#使用request.args.get方式获取拼接的入参数据
            if username in data:  # 判断请求传入的参数是否在字典里
                return jsonify(data[username])
        	#如果在的话,则返回data对应key的值转成的json串信息
            else:
                return jsonify(err[username])
        	#如果不在的话,返回err对应key的value转成的json串信息
        app.run(host='0.0.0.0',port=8802,debug=True)
        #这个host:windows就一个网卡,可以不写,而liux有多个网卡,写成0:0:0可以接受任意网卡信息
        #通过访问127.0.0.1:8802/get_user,form—data里输入username参数,则可看到返回信息

        接口返回的截图,如下:




        4.request.values.get()获取请求参数的方法,不仅支持获取连接拼接的参数,而且还能获取body form填入的参数

      • 未完待续
    展开全文
  • python封装 (pyinstaller)

    万次阅读 2018-03-19 18:16:46
    windows 下编写控制台程序后,会生成exe的可执行程序,创建工程最后都会生成可执行程序,python工程都是python调用各种模块,执行起来也不方便,所以这里讲一下python封装exe文件过程!windows 系统(按照我自己环境...

        windows 下编写控制台程序后,会生成exe的可执行程序,创建工程最后都会生成可执行程序,python工程都是python调用各种模块,执行起来也不方便,所以这里讲一下python封装exe文件过程!

    windows 系统(按照我自己环境):

        首先我们拿到python工程文件后,必须保证程序可以正常执行,才能在此环境中进行封装,不然封装成功了,执行时会报错,提示有些模块没有导入

        

        1. 打开cmd 运行 pip install pyinstaller :

        

        2. 安装时,报错,具体就是pywin32版本不对,需要重新安装pywin32:

        

        3. 打开网址 https://www.lfd.uci.edu/~gohlke/pythonlibs/ ,选择pywin32 下载whl文件,注意要和电脑 匹配  
        

        4. 进入下载好的目录下, 运行pip  install  pywin32.whl  

        5. 再次安装pyinstaller,安装成功,准备打包

        

    打包:

        1. 确定程序入口(相当于程序的主函数)

        

        2. 通过 cd 命令进入main.py文件所在路径

        

        3. 执行命令: pyinstaller -F -wmain.py --hidden-import=pandas._libs.tslibs.timedeltas可以看到相应目录生成build和dist文件夹  build文件夹没用 可以删除

        

        4. 将platforms文件夹放到exe文件同级目录,运行exe(这里platforms 里面是pyqt调用的动态库文件)

        

        

        5. 打开exe,成功

        


    Mac osx系统

    PyQT5 封装独立程序,优先推荐 pyinstaller,而非 py2app 或者 py2exe。事实上,PyInstaller 封装 Windows 端的 exe 文件也是不错的选择

    这是因为 py2app 等不会将程序环境(如 python 的 frameworks 等),因此并不会封装为一个独立的软件(standalone app),具体表现为仅能在本机正常运行,在别人的电脑上运行会报错。然而 pyinstaller 则封装完整,可在同系统的不同机器上运行。

    封装步骤

    在 terminal 中依次键入:

    pip3 install pyinstaller
    pyinstaller --windowed --onefile --clean --noconfirm main.py
    pyinstaller --clean --noconfirm --windowed --onefile main.spec
    

    调测

    一般而言,很少有同学能一次跑通,经常莫名其妙就闪退了或者报错,非常遗憾大家都得根据本机环境进行一些修改。

    那么我们到底要调测哪些东西呢?从哪里看我们的报错呢?

    STEP 1: 找到 exec 文件

    对于 mac 系统来说,方法有两个(其实本质是一个):

    1. 大家双键单击 app 文件选择 show package contents,如下图找到你们的 exec 文件(文件名字是自己起的,主要看文件类型);
    image.png
    1. 直接打开 exec 文件(文件名字是自己起的,主要看文件类型):

      image.png

    STEP2: 使用 exec 文件运行,并查看报错

    image.png

    如上是正确时候的运行输出,但如果有错,这里会有具体的报错信息,每个人可能不同。对应不同的报错信息,大家可以直接复制黏贴到 google 或者 Bing 国际版中查看,建议优先查阅英文网页。

    经历过的坑与解决方案

    我来列举一下我们团队历经过的坑。

    坑1:没选对当前 python 版本

    大多数同学的电脑中都不止一个 python 版本,比如 mac 自己本身默认的是 python 2.7。

    注意一定要选对 python 的版本,pyinstaller 一定要存在你当前 project 的 interpreter 对应的 python 版本下。

    坑2:各工具包版本不适配

    你可能有不同的包冲突、不适配,解决的方法也是类似的。

    以我经历的坑为例,我电脑的 pandas 版本比较高,在使用 pyinstaller 时报错“Pandas missing pandas._libs.tslibs.timedeltas.so”,导致在程序运行时终端总是报错。

    解决的方法是:以 pandas 为例,手动增加 hook 文件,将 pandas 的 hiddenimports(即 Pandas missing pandas._libs.tslibs.timedeltas.so) 写入。其实很简答的,具体如下:。

    STEP 1

    找到 python frameworks 下 hook 文件所在地

    STEP 2

    在 hook 文件夹中手动增加 hook-pandas.py 文件,在文件中手动写入:hiddenimports = ["XXXX"],其中 XXX 是指你在运行 exec 文件中报错缺失的那个 module 的名字,对着抄写即可。

    比如我的情况为写入:


    封装windows时,很顺利,mac系统封装 碰到了各种问题,还是不太了解里面的运行机制,以后再深入了解把!

    展开全文
  • 使用flask封装,简单来讲就是将python文件引入flask。这样的结果就是在网页上输入一个url就能得到结果。下面就讲如何进行实现。 2. 任务1:求两数之和 2.1 代码讲解 新建一个server.py的文件,文件中代码如下所示: ...
  • python 打开网页封装自己的浏览器 selenium 下载浏览器和浏览器驱动 功能全面,就是不能无边框 pip install selenium from selenium import webdriver from selenium.webdriver.chrome.options import Options #...
  • Python网页抓取之Lxml

    千次阅读 2017-05-09 10:48:18
    Lxml是基于libxml2这一XML解析库的Python封装。该模块使用C语言编写,解析速度比BeautifulSoup更快。 Lxml可以正确解析属性两侧缺失的引号,并闭合标签。如案例一 案例二是Lxml的CSS选择器抽取面积数据的实例代码#...
  • Python 网页链接中文乱码的解决

    千次阅读 2018-09-25 11:18:51
    Python 网页链接中文乱码的解决 问题 在实现python网络爬虫的过程中,有时候你会发现有些链接中的中文字符会变成“乱码”。当然所有的乱码都是缺少一个合适解码编码方式。如果我们需要提取网页链接中的中文字符这么...
  • 封装函数实现网页登入代码 1.开发环境:pycharm。 2.代码实现: def login (username,password): name = 'admin123' pwd = '123456' for i in range(3): if username ==name and password == pwd: print('登入...
  • 本文实例为大家分享了Python实现发送QQ邮件的封装代码,供大家参考,具体内容如下 封装code import smtplib from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart from email....
  • Python 网页自动登录(签到)

    千次阅读 2019-09-17 09:28:29
    背景:因为某些原因,每天上网必须登录某个网页,觉得很麻烦 所以就写了这样一个自动登录网页的东西 使用软件Fiddler.exe 注:无法识别https时,可安装Fiddler https证书,具体怎样安装 百度一下你就知道 在网页填写好...
  • 本文实例讲述了Python访问MySQL封装的常用类。分享给大家供大家参考。具体如下: python访问mysql比较简单,下面整理的就是一个很简单的Python访问MySQL数据库类。 自己平时也就用到两个mysql函数:查询和更新 ... ...
  • python实现的一个网页爬取功能,封装了数据库模型操作 和 socket服务等自定义的类
  • Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱 2015-04-27 程序猿 程序猿 来自:我爱自然语言处理,www.52nlp.cn 链接:...
  • Python爬虫图形界面封装版本

    千次阅读 2017-12-12 12:48:02
    用图像界面的封装好的爬虫 用于爬取网页的超链接和对应的文字(Text) 使用的库 import tkinter import requests from bs4 import BeautifulSoup 运行效果: 点击查询 代码:# -*- coding: utf-8 -*- ...
  • 人生苦短,我有python啊,试试用 Python 来朗读给你听吧。 网页转换成语音,步骤无外乎: 网页正文识别,获取到正文的文本内容; 文本转语音,通过接口将文本转换成语音文件; 语音文件的发声,即将语音文件读出...
  • 1、Python网页抓取 2、Python正则表达式应用 直接上代码: # coding: utf-8import sysimport urllibimport urllib2import reimport requests# reload(sys)# sys.setdefaultencoding("utf-8")# 基金代码fundIds = ...
  • python封装爬虫使用tkinter图形化界面

    千次阅读 2018-04-28 17:01:47
    这个项目大致功能就是,在窗口中输入用户的账号密码,爬取信息后通过tkinter展示,如图:其中爬虫部分省略,主要是把爬虫功能简单封装,输入用户账号密码,然后显示爬取的信息# -*- coding: utf-8 -*- import ...
  •  一个用python写的典型的hadoop streaming例子程序如下,该程序就是抓取网页的标题:  mapper.py #!/usr/bin/env python   ...
  • 前言 在完成了基本的爬取任务之后,接到了将其封装为一个爬虫...python爬虫学习笔记3封装爬虫类 这篇和前面两篇一样,是按照时间记录的。 转载注明出处。 任务介绍 1、尝试不使用session去进行爬取,最好能将cookie...
  • 初学Python的同学可能想知道,Python开发封装是怎么回事呢? 封装不仅仅是隐藏属性和方法是具体明确区分内外,使得类实现者可以修改封装内的东西而不影响外部调用者的代码;而外部使用用者只知道一个接口(函数)...
  • 一个用python制作的xxtea对称加密解密的批处理图片资源工具,带源码。用于网页,页游资源图片资源加密处理
  • 使用python抓取网页

    万次阅读 2011-06-08 17:22:00
    使用python抓取网页(以人人网新鲜事和团购网信息为例)from http://www.pinkyway.info/2010/12/19/fetch-webpage-by-python/?replytocom=448by 颖风斯特 BeautifulSoup, Python, urllib, 人人网, 团购 12 Comments...
  • Python爬虫,get方法的封装

    千次阅读 2018-05-30 00:47:14
    大家经常使用Python3的urllib库进行get请求,得到数据,来封装爬虫的行为。下面封装了一个方法供大家参考使用:这里比较规范的使用了工程化的思想,考虑了日志的编写;爬虫发送get请求时,则考虑了UA等...
  • 利用python爬取网页图片

    千次阅读 2017-04-06 11:09:49
    学习python爬取网页图片的时候,对于屌丝男士来说,可以通过这个工具去批量下载你想要的美女图片,哈哈,楼主只是在练习爬取网页图片的时候,顺便爬取美女的照片哦 开始正题: 我从尤物网去爬取我喜欢的女神的...
  • Python爬取整个网页的数据

    万次阅读 多人点赞 2018-11-13 16:28:31
    在项目内新建一个python文件Test.py Test.py # 导入urllib下的request模块 import urllib.request # 导入正则匹配包 import re # -*- encoding:utf-8 -*- """ @作者:小思 @文件名:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,073
精华内容 13,229
关键字:

python网页封装

python 订阅