Python爬虫入门,快速抓取大规模数据(第三部分)

如果没有读过前两部份的读者,建议先看前两部份:python爬虫入门,快速抓取大规模数据python爬虫入门,快速抓取大规模数据(第二部分)
在这一部份我们将看看如何存储数据。需要存储的数据有两部份,一部分是我们已经抓取和未被抓取的网页地址;另一部不份是我们抓取到的数据。首先想到的存储方式是使用关系数据库来存储。
在关系数据库中,表是数据库中存放关系数据的集合,一个数据库里面通常都包含多个表,要操作关系数据库,首先需要连接到数据库,一个数据库连接称为connection;连接到数据库后,需要打开游标cursor,通过cursor执行sql语句。
使用sqlite存储数据
sqlite是一种嵌入式数据库,它的数据库就是一个文件。python就内置了sqlite3,所以我们不需要安装任何额外的东西。本着从最简单的入手然后逐步深入的原则,我们先看看如何使用sqlite存储数据,然后在看看如何使用其他关系数据库。
在我们的数据库中创建一张urls的表,这张表包含两个字段url和timestamp。timestamp字段记录url采集的时间,没有采集的timestamp为空。
下面函数add_new_url()用来添加新的未采集的url数据库表中。
下面函数get_unvisited_url()将从数据库中返回一条待采集的url。
使用mysql存储数据
这一部分我们已经安装和搭建了一台mysql的数据库,这里就不讨论如何搭建mysql数据库了。如果你已经学习了上一节中如何sqlite来存储数据,那么你已经学会了基本的python的数据库编程。对于理解下面的代码不会有任何问题,和sqlite版本的区别只是数据库连接的方式不一样而已。
总结
这部分我们讨论了如何让我们的url存储到关系数据库中,作为扩展练习读者还可以用同样的方法保存抓取到的网页内容。除了关系数据库之外,我们也可以使用非关系数据来保存数据。
另外,在接下来的章节中我们将讨论如何抓取动态生成内容的网页。