SQLite存储scrapy爬虫数据实例

阿里云2000元红包!本站用户参与享受九折优惠!

Conditions:

1、熟悉python基础语法。

2、熟悉scrapy爬虫框架。

3、熟悉SQL DML语言。

概述:本例爬虫百度首页,获取title和右上角菜单名称,然后存储到SQLite数据库。

Step1:创建spider 

Step2:创建Item

    class BaiduItem(scrapy.Item):

        title = scrapy.Field()

        menu = scrapy.Field()

Step3:编辑spider

    class BaiduSpider(scrapy.Spider):

        name =’baidu’

        allowed_domains = [“baidu.com”]

        start_urls = [

            “http://www.baidu.com”

            ]

        def parse(self, response):

            title = response.xpath(“//title/text()”).extract_first()

            menu = response.xpath(‘//*[@id=”u1″]/a[3]/text()’).extract_first()

            item = BaiduItem()

            item[“title”] = title

            item[“menu”] = menu

            yield item

注意:一定要用yield item返回,不然pipelines.py无法获取到item数据

Step4:配置settings.py

    ITEM_PIPELINES = {

        #和pipelines.py中的类对应

        ‘baidu.pipelines.BaiduPipeline’:300,

    }

Step5:编辑pipelines.py

    class BaiduPipeline(object):

        def __init__(self):

            print(“——–“)

        def open_spider(self,spider):

            self.db_conn = sqlite3.connect(‘scrapy.db’)

            self.db_cur =self.db_conn.cursor()

        #关闭数据库

       def close_spider(self, spider):

           self.db_conn.close()

        # 对数据进行处理

        def process_item(self, item, spider):

            self.insert_db(item)

            return item

        #插入数据

        def insert_db(self, item):

            values = (

            item[‘title’],

            item[‘menu’]

            )

              sql =’INSERT INTO baidu(title,menu) VALUES(?,?)’

              self.db_cur.execute(sql, values)

              self.db_conn.commit()

注意:执行完之后,如果只生成数据库,而没有创建表,可先创建表,然后再执行一遍。

Step6:执行爬虫

Step7:查看数据库表


https://www.jianshu.com/p/726847155be0

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论