勤学思培训网OHOWMM
  • 总算懂了python自学方法

    Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站!以下是小编为你整理的python机器学习

    1. Django是 python 语言写的一个网络框架包,所以你得知道一些 Python 基础知识。

    2. 其次你最好有一些做网站的经验,懂一些网页 HTML, CSS, Javascript 的知识。

    没有经验也没有关系,慢慢来就好了,你一定可以学会,Django 很简单!

    Django 特点

    强大的数据库功能


    [图片0]

    用python的类继承,几行代码就可以拥有一个丰富,动态的数据库操作接口(API),如果需要你也能执行SQL语句

    自带的强大的后台功能

    几行简单的代码就让你的网站拥有一个强大的后台,轻松管理你的内容!

    优雅的网址

    用正则匹配网址,传递到对应函数,随意定义,如你所想!

    模板系统

    强大,易扩展的模板系统,设计简易,代码,样式分开设计,更容易管理。

    缓存系统

    与memcached或其它的缓存系统联用,更出色的表现,更快的加载速度。

    国际化

    完全支持多语言应用,允许你定义翻译的字符,轻松翻译成不同国家的语言。

    函数式编程

    允许变量指向函数,直接对变量的调用和调用这个函数是一样的效果;

    接收参数是函数的函数,同时也称高阶函数。

    例子:利用add(x,y,f)函数,计算:x,y的平方根之和:

    import math

    def add(x,y,f):

    return f(x)+f(y)

    add(9,25,)

    END

    map()高阶函数

    1

    a)、map()函数:接收一个f函数以及一个list,并且通过f函数依次作用在list的每一个元素上返回一个新的list。

    b)、使用:map(function,list)

    c)、例子:

    假设用户输入的英文名字不规范,没有按照首字母大写,后续字母小写的规则,请利用map()函数,把一个list(包含若干不规范的英文名字)变成一个包含规范英文名字的list:

    输入:['adam', 'LISA', 'barT']

    输出:['Adam', 'Lisa', 'Bart']

    def format_name(l):

    return l[0:1].upper()+l[1:].lower()

    print map(format_name,['adam', 'LISA', 'barT'])

    reduce()高阶函数

    a)、reduce()函数:允许接收一个函数f和一个list;而reduce()传入的函数f必须接收两个参数。reduce对list中的每一个元素反复调用函数f并返回结果,然后将结果作为新的参数传入函数f .

    b)、调用:reduce(function,list)

    c)、例子:Python内置了求和函数sum(),但没有求积的函数,请利用recude()来求积:

    输入:[2, 4, 5, 7, 12]

    输出:2*4*5*7*12的结果

    def prod(x,y):

    return x*y

    print reduce(prod,[2,4,5,7,12])

    END

    filter()高阶函数

    1

    a)、filter():接收一个函数f和list。函数f对list中的每一个元素进行过滤,返回true or false,filter()函数根据判断结果自动过滤不符合条件的元素,返回符合条件的元素组成新的list。

    b)、调用:filter(function,list)

    c)、例子:请利用filter()过滤出1~100中平方根是整数的数,即结果应该是:

    [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

    import math

    def is_sqr(l):

    s=(l)

    return int(s)==s

    print filter(is_sqr,range(1,101))

    print函数

    我们在使用print()函数的时候如果在参数前面加上r,那么后面字符串里的内容就原封不动地打印出来啦。

    >>> print(r'\nt')

    \nt

    >>> print('\nt\')

    SyntaxError: EOL while scanning string literal

    >>> print('\nt\')

    n

    >>> print('\nt\\')

    n \

    你知道为什么输入print('\nt\')报错;而输入print('\nt\\')可以正常运行吗?因为后面得接些转义字符。

    如果我们想让每个单词单独输出一行怎么办呢?n虽然是一种方法,但是让代码很难看。

    在print()里,用''' '''将要输出显示的内容包起来,引号里的换行符就可以打印出来啦,方便直观。

    当然前面加上r也是有同样效果的,下次看到不要惊奇。

    python里的变量是区分大小写的,前面我们已经介绍过来,再来通过布尔值来验证一下。


    [图片1]

    >>> true

    Traceback (most recent call last):

    File "", line 1, in

    true

    NameError: name 'true' is not defined

    >>> True

    True

    给爬虫建立个目录

    在项目里面和app同级,然后把这个目录变成一个python的package

    mkdir ~/python_spider/sfspider touch ~/python_spider/sfspider/

    以后,这个目录就叫爬虫包了

    在爬虫包里面建立一个用来装我的爬虫们

    vim ~/python_spider/sfspider/

    一个基本的爬虫,只需要下面几行代码:

    (代码下面会提供)然后呢,就可以玩玩我们的“爬虫”了。

    进入python shell

    >>> from sfspider import spider

    >>> s = ('')

    >>>

    >>> '/q/'

    >>> print ('h1#questionTitle').text()

    >>> 微信JS—SDK嵌套选择图片和上传图片接口,实现一键上传图片,遇到问题

    看吧,我现在已经可以通过爬虫获取segmentfault的提问标题了。下一步,为了简化代码,我把标题,回答等等的属性都写为这个蜘蛛的属性。代码如下

    # -*- coding: utf-8 -*-

    import requests # requests作为我们的html客户端

    from pyquery import PyQuery as Pq # pyquery来操作dom

    class SegmentfaultQuestionSpider(object):

    def __init__(self, segmentfault_id): # 参数为在segmentfault上的id

    = '/q/{0}'.format(segmentfault_id)

    = None # 弄个这个来缓存获取到的html内容,一个蜘蛛应该之访问一次

    @property

    def dom(self): # 获取html内容

    if not :

    document = ()

    = 'utf-8'

    = Pq()

    return

    @property

    def title(self): # 让方法可以通过的方式访问 可以少打对括号

    return ('h1#questionTitle').text() # 关于选择器可以参考css selector或者jquery selector, 它们在pyquery下几乎都可以使用

    @property

    def content(self):

    return ('.').html() # 直接获取html 胆子就是大 以后再来过滤

    @property

    def answers(self):

    return list(() for answer in ('.').items()) # 记住,Pq实例的items方法是很有用的

    @property

    def tags(self):

    return ('--inline > li').text().split() # 获取tags,这里直接用text方法,再切分就行了。一般只要是文字内容,而且文字内容自己没有空格,逗号等,都可以这样弄,省事。