应气人的邓小猪的要求,写总结!!!!!!
前情提要:
暑假学习第一周总结:本周主要目标在于学习基础的爬虫,了解什么是爬虫,如何爬取网页上的数据并成功实现简单的爬虫。(学习借鉴他人简书爬虫知识)
完成情况:0.5%(哈哈哈哈哈哈哈哈哈哈哈哈)
故事结局
最终完成成果:
- 配置python环境和爬虫基本环境
- 完成所看简书一二部分内容,第三部分内容基本理解,但并没有实现代码部分(因为我不懂怎么用那个库!!!!一点都不懂!!!!)
由于看过别人代码之后虽然大致明白爬虫机理,但是自己基础知识太薄弱并不懂那些库函数的使用吧啦吧啦,so,实现简单爬虫转变为学习基础知识,正所谓厚积薄发,要有扎实的基础知识才可以写出代码(哈哈哈哈哈哈哈哈)所以本渣渣开始学习廖雪峰大佬的python2.7教程(本人所用python环境为2.7) - 学习python基础知识(学了一半,学到函数式编程)
接下来,开始正式的知识回顾啦(哈哈哈哈哈):
故事发展
配置环境
本机所用配置:python:2.7版本,win7电脑环境,windows环境下
爬虫环境:
- 四个依赖的库文件:
- beautifulsoup库:快速处理抓取下来的数据。
- requests模块:主要负责网络功能。
- lxml库:配合beautifulsoup库使用。
- pymongo库:和mongoDB数据库交互,数据存储在mongoDB数据库中。
- pip:利用pip命令安装库文件
- mongoDB数据库:存放爬取的数据
安装
- 安装pip: 上python官网下载pip安装包,具体过程如网址[pip安装]http://www.tuicool.com/articles/eiM3Er3
安装过程中在添加pip环境变量这里,折腾了半天都不行,特别注意:按照步骤安装pip添加环境变量时要将pip.exe的路径加入到path环境变量中。
在利用python setup.py install命令安装pip时,并没有安装到自己所解压缩的文件夹下,而是安装在本机安装python时的python文件夹下,因此正确的路径应该是某盘:\python安装文件夹\Scripts文件夹,在这个路径下应该可以找到pip.exe文件(具体情况具体分析) - 利用pip命令安装库文件(具体命令参考简书爬虫教程)
- 安装mongoDB
至此,环境配置完成,可以开始正式学习爬虫了٩(๑òωó๑)۶
教程三简单爬虫demo分析
给了一个小代码来分析对瓜子二手网的车辆信息的爬取和检索,在这个部分虽然代码可以理解,但是代码中具体的函数如何使用并不了解,而且python语法太弱所以大致看懂怎么回事之后开始python语法的具体学习。
这个demo显示了爬虫的大致的流程:
- 首先:要找到我们要爬取的数据的URL,对于要爬取的网页地址进行分析找到其中的规律,例如瓜子网车辆信息有多页,第一页为o1,第二页为o2,以此类推。可以依据找到的规律构建一个list,然后对每个地址进行爬取。
- 对每个地址爬取的操作:得到网页URL后,对具体某辆车进行分析,获取他的CSS地址,对CSS地址进行过滤分析,去掉无用的前缀,获取我们所需要的车辆信息的的CSS地址链,例如价格,然后对其进行处理。通过库函数和地址获取其中的有用信息。
这是一个简单的爬虫demo,整个原理和代码不难理解,接下来是熟悉库函数和学会如何使用。
python基础知识学习
刚开始想能看懂就行,后来发现不行,自己的语法太弱,没有怎么学过,所以开始大致的看python基础教程,是廖雪峰的python2.7教程[python教程]https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000
看到了函数式编程这一部分,具体知识教程里有,此处仅写一下再看教程时自己动手试验得到的一些小知识和学到的一些新函数。
-
{'a':1,'b':2,'c':3}['a'] = 1
开始不懂这个代码为什么这么写,结果为什么是1,然后发现它等于一下代码:
t = {'a':1,'b':2,'c':3}
t['a'] = 1
其实就是求一个字典里某个key的value值。
- t.pop('a')函数是返回'a'的value值:1
因此注意一下二者的区别(一不小心就搞错了-_-):
t = {'a':1,'b':2,'c':3}.pop('a') //t=4
t = {'a':1,'b':2,'c':3}
s = t.pop(4) //这时t是一个list,s=4
- 明白可变对象与不可变对象的区别,重点!重点!重点!
字符串是不可变对象!
s = 'abc'
t = s
s = 'abcd'
//t='abc',s='abcd'
在创建字符串时,python先在内存里创建一个'abc'变量,然后将s指向的地址指向它,接着创建了t变量,t = s,将t指向的地址指向s所指向的地址即'abc'变量而非s,接着s = 'abcd',python在内存里创建'abcd'变量,改变s所指向的地址。(好绕口,廖雪峰教程里有具体的图,清晰明了,具体如下)
- 关于字符串的几个函数:upper(),lower(),capitalize(),capwords(),strip()
- upper()和lower(): upper()将字符串的各个字母大写,lower()则是小写,结合上面的字符串不可变性,有个小程序理解:
t = 'abc'
t.upper() //t = 'abc'
在做廖雪峰大大布置的课后题时发现的问题,本来以为t.upper()后t会变成'ABC',实际运行结果不对,还是'abc',然后明白过来t.upper()在内存中先建了一个变量'ABC',然而t所指向的内容依旧不变。
- capitalize()方法: 将一个字符串的第一个字母大写,其余字母变为小写,例如:
s = 'abcDEf'
s1 = ' abcDEf'
s.capitalize() //结果为'Abcdef'
s1.capitalize() //结果为' abcdef' 第一个字符是空格
- capwords()函数:这个函数的具体过程如下:先调用s.split()将字符串s分解成单词,然后调用s.capitalize()函数将每个单词的首字母大写其他字母小写,然后在调用s.join()函数将单词连接起来成为句子,他有两个参数,第一个参数是字符串s,第二个参数是分解成单词时的分隔符,默认为空格
s = 'pigDeng iS a BIG piG'
capwords(s) // 结果: 'Pigdeng Is A Big Pig'
capwords(s,None) // 结果: 'Pigdeng Is A Big Pig'
capwords('abcDacdaDEf',a) //结果: 'aBcdaCdaDef' a是分隔符,不做处理,可以看作是空格
- strip()函数:去掉字符串头尾指定的字符
s = '0000pigDeng is a big pig000'\
s.strip('0') //结果:'pigDeng is a big pig'
综上,python包含的机制太高级,可以很轻松的调用代码,不用乱七八糟写一通确实还挺方便哈哈哈哈哈。
阿阿阿阿阿阿阿阿阿阿总结终于结束了,累死爸爸了,下周继续!睡觉了,呼呼呼~