爬虫学习笔记(1)--环境准备与正则表达式

一、安装python 虚拟环境    (将使用python2/3的项目分开)
====================
    安装virtualenvcmd
    ---------
        cmd命令:pip install virtualenv
    安装 virtualenvwrapper(虚拟环境管理器)
    ---------
        1、C:\Users\lenovo>pip install virtualenvwrapper
        2、配置系统变量 WORKON_HOME=E:\Evns
        3、C:\Users\lenovo>pip install virtualenvwrapper-win
        4、C:\Users\lenovo>workon
            显示E:\Evns下的虚拟环境(一个文件夹)
    快速创建虚拟环境
    ---------
        mkvirtualenv [--python=路径+python.exe]  环境的名字
        例如:C:\Users\lenovo>mkvirtualenv --python=G:\python3.5_64\python.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
       

 

posted @ 2017-10-01 22:09  透明的红萝卜  阅读(214)  评论(0编辑  收藏  举报