在抓取伯乐在线上面的文章的信息的时候我们尝试将抓取到的数据写入数据库。
写入的方式有两种,一种是同步的写入,另一种是异步的写入。
同步的写入比较好理解,就是爬到数据以后就立刻将数据写入MySQL。
但是同步地写入有一个缺点,因为scrapy爬取数据的速度远远大于将数据写入MySQL的速度,在数据量比较小的时候造成的影响不大,但是当数据量非常大的时候就会出现很多的问题。所以我们要采用异步的方式爬取数据并且写入MySQL。
python有一个Twisted框架可以完成异步的写入。这个框架可以提供一个连接池,先将爬取到的数据缓存进连接池,然后将连接池中的数据写入MySQL。
举个例子:pipeline.py
文件:
首先是同步写入数据:
初始化的时候先连接数据库,完成连接以后,填写process_item
函数体,里面包括要执行的sql语句,在执行execute()
执行这个语句,并且将item
里面的数据写入数据库,最后commit
,虽然我不知道commit有什么用。
接下来是异步的方式:
这个写法基本是固定的,我们如果做修改,也是修改sql语句,以及出传递的item
。