今天使用的是专业的异步爬虫框架,也就是说使用普通代码经过添加进程和异常处理的,在框架中已经封装好,可以直接使用,我们只需要在spider进行标签、属性或者标题的获取,代码如下:

  1. 创建练习目录:test,cd test

  2. 使用指令创建爬虫目录:scrapy startproject shares,cd shares

  3. 使用指令创建初始spider代码:scrapy genspider share books toscrape.com

  4. # -*- coding: utf-8 -*-import scrapyfrom ..items import SharesItem,SharesItemLoaderclass ShareSpider(scrapy.Spider):    name = 'share'    allowed_domains = ['books.toscrape.com']    start_urls = ['http://books.toscrape.com/']    def parse(self, response):        item = SharesItem()        for book in response.xpath('//article[@]'):            item['name']=book.css('h3>a::attr(title)').extract_first()            if len(item['name']) >= 175:                item['name'] = item['name'][:175]            item['price']=book.css('div.product_price>p::text').extract_first()[1:]            yield item        next_url=response.css('ul.pager>li.next>a::attr(href)').extract_first()        print(next_url)        if next_url:            next_url=response.urljoin(next_url)            yield scrapy.Request(next_url,callback=self.parse)
  5. item文件中创建容器
    # -*- coding: utf-8 -*-# Define here the models for your scraped items## See documentation in:# https://doc.scrapy.org/en/latest/topics/items.htmlimport scrapyfrom scrapy.loader import ItemLoaderfrom scrapy.loader.processors import TakeFirstclass SharesItemLoader(ItemLoader):    default_output_processor = TakeFirst()class SharesItem(scrapy.Item):    name = scrapy.Field()    price = scrapy.Field()
  6. 核心处理器中设置数据库连接
    # -*- coding: utf-8 -*-# Define your item pipelines here## Don't forget to add your pipeline to the ITEM_PIPELINES setting# See: https://doc.scrapy.org/en/latest/topics/item-pipeline.htmlimport cx_Oracledef connect_oracle():    conn = cx_Oracle.connect('c##scott','123456','192.168.31.210:1521/orcl')    return connclass SharesPipeline(object):def process_item(self, item, spider):        conn = connect_oracle()        cur = conn.cursor()        sql = "insert into shares values(seq_shid.nextval,'%s','%s')"%(item['name'],item['price'])        print('这是sql语法:',sql)        try:            cur.execute(sql)            conn.commit()        except Exception as e:print('数据库报错...[%r]'%e)            conn.rollback()        conn.close()        return item
  7. 配置文件设置爬虫延迟等设置,添加和修改如下代码
    USER_AGENT:'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'ITEM_PIPELINES = {'shares.pipelines.SharesPipeline':300,}# Obey robots.txt rules# ROBOTSTXT_OBEY = TrueROBOTSTXT_OBEY = FalseDOWNLOAD_DELAY = 0.25
  8. 本文介绍的只是简单的情况作为引入,后续还会继续更新多种复杂情况,敬请期待。

oracle sql练习_使用Scrapy爬虫,并将数据存储到oracle相关推荐

  1. Softing dataFEED OPC Suite将西门子PLC数据存储到Oracle数据库中

    一 背景 现代工业产品不仅生产批量大,而且过程自动化程度高,这对于用户追溯产品设计与制造过程中产生的数据而言,无疑是个新的挑战.与此同时,制造商们对产品制造过程中产生的大量工艺数据也愈发重视,并不断寻 ...

  2. Python3.x使用Scrapy将爬取数据存储成Json

    Python3.x使用Scrapy将爬取数据存储成Json 豆瓣电影排名前250链接 https://movie.douban.com/top250 注:前提安装好python及所需的环境 1.scr ...

  3. PHP如何启动scrapy,python,_新手Scrapy爬虫运行问题,python - phpStudy

    新手Scrapy爬虫运行问题 新人刚开始学习Scrapy,成功安装Scrapy,运行第一个程序还是报错,望高手帮忙解答,感激不尽 错误提示 Traceback (most recent call la ...

  4. 爬虫mysql数据清洗_爬虫分析之数据存储——基于MySQL,Scrapy

    配置MySql 关于MySQL在Ubuntu的Pycharm上的配置,可以参考这篇文章中的第三部分 如果上面的步骤处理完毕后找不到你新建的数据库, 可以参照下图配置 勾选要显示的Schemas(数据库 ...

  5. scrapy没有运行结果_关于Scrapy爬虫项目运行和调试的小技巧(下篇)

    前几天给大家分享了关于Scrapy爬虫项目运行和调试的小技巧上篇,没来得及上车的小伙伴可以戳超链接看一下.今天小编继续沿着上篇的思路往下延伸,给大家分享更为实用的Scrapy项目调试技巧. 三.设置网 ...

  6. oracle 查重复_日常答疑|MySQL删除重复数据踩过得坑

    问题 群友提问:MySQL这样删除重复数据为啥不成功呢? 严小样儿:安排! 咋一看,大家都说where子句里面应该使用极值函数,加个max就对了,这么简单! # 大家想象中这样写是对的,其实仍然是错的 ...

  7. 删除前10行sql oracle,sql server 如何实现删除前1000行数据

    近日,sql数据库入门学习群有朋友问到,利用sql如何删除表格的前1000行数据,是否可以实现? 如果是oracle数据库管理软件,实现起来相对简单多了delete  from 表名  where r ...

  8. oracle 百万数据存储,jdbc oracle 百万级数据量存储

    使用jdbc连接oracle数据库进行百万级数据插入操作. 默认的插入操作 insert into tablename()values()每进行一条记录的插入都会进行commit提交操作,因此使得存储 ...

  9. python爬虫实现股票数据存储_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储!...

    Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...

最新文章

  1. Java 编程的动态性,第 5 部分: 动态转换类--转载
  2. python的数与字符串
  3. Android中1像素Activity进程保活
  4. 【CodeForces - 574B】Bear and Three Musketeers (枚举边,思维,优秀暴力)
  5. 解决tomcat中temp文件夹出现项目的副本的情况
  6. 帝国列表页分开调取年份和月份单独调用的方法?
  7. 别吹了!程序员自学Python,不如9岁小孩,网友:我不服.... ​
  8. 第5章 C++内存模型和原子类型操作
  9. 驳熊节和Martin Fowler的Java消亡论!
  10. CF914D Bash and a Tough Math Puzzle
  11. asp.net网页版斗地主 已提供下载(开源) 测试版
  12. 清北复交人浙南 计算机交叉学科项目大盘点!
  13. CCF CSP刷题—小中大
  14. 2个最好的中文图标搜索引擎
  15. 使用mac的加速办法
  16. MySQL:数据完整性
  17. 8款受欢迎的代码编辑器,你喜欢用哪一款呢?
  18. Attention-Based Recurrent Neural Network Models for Joint Intent Detection and Slot Filling论文笔记
  19. Zookeeper 序列化
  20. 二十年目睹之怪状-大学

热门文章

  1. 数据结构之线性表-链式存储之单链表(一)
  2. ORA-01745: invalid host/bind variable name 报错
  3. 关于数据挖掘关联规则的Oracle实现
  4. Windows Azure奇趣应用之Swingify
  5. 面试官系统精讲Java源码及大厂真题 - 36 从容不迫:重写锁的设计结构和细节
  6. 容器编排技术 -- 在Azure上使用CoreOS和Weave的 Kubernetes
  7. 2018年12月份GitHub上最热门的Java开源项目
  8. 04737 c++ 自学考试2019版 第六章课后练习 程序设计题 1
  9. 开发工具 codepen codepen vscode
  10. 添加谷歌翻译到你的网站