zoukankan      html  css  js  c++  java
  • 爬虫学习笔记(1)--环境准备与正则表达式

    一、安装python 虚拟环境    (将使用python2/3的项目分开)
    ====================
        安装virtualenvcmd
        ---------
            cmd命令:pip install virtualenv
        安装 virtualenvwrapper(虚拟环境管理器)
        ---------
            1、C:Userslenovo>pip install virtualenvwrapper
            2、配置系统变量 WORKON_HOME=E:Evns
            3、C:Userslenovo>pip install virtualenvwrapper-win
            4、C:Userslenovo>workon
                显示E:Evns下的虚拟环境(一个文件夹)
        快速创建虚拟环境
        ---------
            mkvirtualenv [--python=路径+python.exe]  环境的名字
            例如:C:Userslenovo>mkvirtualenv --python=G:python3.5_64python.exe py35_64
        操作
        ---------
            退出输入deactivate
            进入输入workon py35_64
            
            
    二、在py35_64虚拟环境中,需要安装的依赖
    ====================
        workon py35_64
        pip install requests
        pip install -i https://pypi.douban.com/simple scrapy
            期间报错缺Twisted包,缺包参考:www.lfd.uci.edu/~gohlke/pythonlibs/,将包下载下来,并安装此包
            (py35_64) G:python3.5> pip install Twisted-17.9.0-cp35-cp35m-win_amd64.whl
            再次运行安装scrapy
        
    三、背景知识
    =======================
        技术选型
        --------
            request beautifulsoup都是库,scrapy是框架
            scrapy框架可以加入request和beautifulsoup
        网页分类
        --------
            静态页面 数据从服务器端一次性全部拿来
            动态页面(ajax)
        正则表达式
        ----------
            包 import re
            import re
            line = "bao123"
            regex_str = "^b.*3$"        ^b是以b开头    .是任意字符    *是任意数量    3$是以3结尾
            if re.match(regex_str,line):
                print("yes")
        
            ^必须以什么开头
            $必须以什么结尾
            量词
            * 任意次数 + 至少一次  {2} 两次  {2,} 至少两个    {2,5} 字符出现最少两次最多五次
            
            1[83][0-9]{9},满足中括号内任意一个即可,手机号可以是18,也可以是13
            [^1] 不等于1,取非
            [0-9] 表示区间
            [u4E00-u9FA5] 表示一个汉字
            
            .  表示任意字符
            s 表示空格
            S 表示只要不是s空格就可以
            w 表示[A-Za-z0-9_]
            W 表示只要不是w就可以
            d 数字
            
            默认匹配字符串是“贪婪模式”,在量词后面直接加上一个问号?就是非贪婪模式
            贪婪模式:反向匹配,从右往左匹配,匹配到第一个满足要求就停止
            非贪婪:从左边开始匹配,匹配到第一个满足的就停止
            import re
            line = "boooooobbb123"
            regex_str = ".*?(b.*?b).*"   括号的意思是提取子串,输出boooooob。从左往右匹配到第一个b停止,从左往右匹配到第一个停止
            #regex_str = ".*?(b.*b).*"     输出boooooobb,从左往右匹配到第一个b停止,从右往左匹配到第一个停止
            #regex_str = ".*(b.*b).*"     输出bb
            match_object = re.match(regex_str,line)
            if match_object:
                print(match_object.group(1))  提取第一个括号(最外层括号)里面的内容
            else:
                print("no")
        
        特殊字符
        ---------
            1) ^ $ * ? + {2} {2,} {2,5} |
            2) [] [^] [a-z] .
            3) s S w W
            4) [u4E00-u9FA5] () d
           

  • 相关阅读:
    Spark研究笔记7:重要的工厂类UserManager(原创) CVT
    Spark研究笔记9:重要的工厂类PresenceManager(原创) CVT
    Spark研究笔记11:实体类 CVT
    Spark研究笔记5:重要的工厂类NativeManager(原创) CVT
    Spark研究笔记8:重要的工厂类PluginManager(原创) CVT
    Spark研究笔记6:重要的工厂类SessionManager(原创) CVT
    Spark研究笔记12:监听类 CVT
    Spark研究笔记10:重要的工厂类SoundManager(原创) CVT
    声明和定义的区别
    LINQ查询操作符
  • 原文地址:https://www.cnblogs.com/SuMeng/p/7618014.html
Copyright © 2011-2022 走看看