大家好,经过几天的调整和反思,从今天开始准备与大家一起学习「网络爬虫」。
在这个大数据时代,尤其是人工浪潮兴起的时代,不论是工程领域还是研究领域,数据已经成为必不可少的一部分,而数据的获取很大程度上依赖于爬虫的爬取,所以爬虫也逐渐变得火爆起来。
爬虫是一门非常有趣的技术,掌握了这门技术能让我们在繁荣的互联网中探索,方便快捷的收集各种各样的数据或者文件。
现在互联网公司招聘爬虫工程师,给的工资也比较高,我找了一个招聘网站,了解了现在爬虫工程师的工资是15k-18k左右,从这里也足见学习爬虫的重要性。
当然了,想要学好网络爬虫需要初步掌握一些基础知识:
今天先学习网络爬虫中常用的Python基础知识:
Python中的包
为了避免模块名冲突,Python引入按目录来组织模块的方法,称为包(package)。
比如:
Mycompany 包
|- __init__.py 内置模块
|- __abc.py 模块
|- __xyz.py
面向对象
面向对象编程是一种程序设计,在Python中一切皆对象,面向对象编程把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。
在学习面向对象编程时,肯定需要理解对象?以及它和类又有什么关系?推荐大家阅读,我之前写的Python的类和对象
那面向对象和爬虫又有什么关联呢?
假设我们要爬取一个博客上的文章,然后将这些文章的数据保存在本地。
article1 = { 'title': '学习python的心得总结', 'pub_date': '2019/1/2', 'body': '正文内容省略' }
article2 = { 'title': '如何用python编写命令行工具', 'pub_date': '2019/1/20', 'body': '正文内容省略' }
当我们用面向对象的程序设计思想时,我们将文章这种数据类型视为一个对象,这个对象拥有title、pub_date和body这三个属性。
如果要打印一篇文章的标题与日期,首先必须创建出这篇文章对应的对象,然后,将对象实例化(print_title),让对象把自己的数据打印出来,代码如下:
class Article(object):
def __init__(self, title, pub_date, body):
self.title = title
self.pub_date = pub_date
self.body = body
def print_title(self):
print('%s: %s' % (self.title, self.pub_date))
当我们要用计算表示对一类具有共同特性、共同行为的事物时就可以采用面向对象的方式定义一个类来表示。而当发现相似事物间具有类似父子一般的传承关系时,则要采用继承来实现,推荐阅读:Python的类的继承
Python中的集合类型
生成器、迭代器与yield
网络爬虫所需要处理的数据量通常非常庞大,对集合数据处理方式大多采用(for…in)的方式,但这种方式效率低,因此我们采用更为高效的方式来处理循环——生成器和迭代器。
迭代是Python访问集合元素的一种方式。迭代器从集合的第一个元素开始访问,直到所有的元素被访问完结束,迭代器只能往前不会后退。
迭代器两个基本的方法:iter()和next()。字符串,列表或元组对象都可用于创建迭代器,例如:
>>>list=[1,2,3,4]
>>> it = iter(list) # 创建迭代器对象
>>> print (next(it)) # 输出迭代器的下一个元素
1
>>> print (next(it))
2
>>>
生成器(generator)是非常强大的工具,在Python中,可以简单地把列表生成式改成generator,也可以通过函数实现复杂逻辑的generator。
作为Python爬虫学习的开篇,很多东西都是引入,对于想深入了解爬虫的小伙伴,可以翻阅之前写的文章,下一步,我会理论结合实践,分享更优质的关于Python爬虫的内容,如果觉得学习路上很孤单,就和我一起来学习吧!