scrapy数据的持久化(将数据保存到数据库)

一、建立项目

1、scrapy startproject dushu

2、进入项目

 cd dushu

  执行:scrapy genspider -t crawl read www.dushu.com

  查看:read.py
class ReadSpider(CrawlSpider):
name = 'read'
allowed_domains = ['www.dushu.com']
start_urls = ['https://www.dushu.com/book/1175.html']

注:项目更改了默认模板,使其具有递归性


3、模板CrawlSpider具有以下优点:

1)继承自scrapy.Spider

2)CrawlSpider可以定义规则

在解析html内容的时候,可以根据链接规则提取出指定的链接,然后再向这些链接发送请求;

所以,如果有需要跟进链接的需求,意思就是爬取了网页之后,需要提取链接再次爬取,使用CrawlSpider是非常合适的;

3)模拟使用:

a: 正则用法:links1 = LinkExtractor(allow=r'list_23_\d+\.html')

b: xpath用法:links2 = LinkExtractor(restrict_xpaths=r'//div[@class="x"]')

c:css用法:links3 = LinkExtractor(restrict_css='.x')

4、更改模板后rules参数解释:

a:参数一 (allow=r'/book/1175_\d+.html') 匹配规则;

b: 参数二 callback='parse_item' ,数据回来之后调用多方法

c: 参数三,True,从新的页面中继续提取链接

注:False,当前页面中提取链接,当前页面start_urls

5、 修改start_urls

start_urls = ['https://www.dushu.com/book/1175.html']

  写 def parse_item(self, response)

6、items.py

7、pipelines.py(yield后会回到pipelines.py)

1)写def __init__(self): 和 def close_spider(self,spider):

2)连接mysql,保存数据

3)启动mysql (Navicat)

4) 连接数据库def process_item(self, item, spider)

5)setting(robots、USER_AGENT、ITEM_PIPELINES)

6)read.py(修改rules)

8、执行scrapy crawl read,将数据写入数据库

 

欢迎关注小婷儿的博客:

csdn:https://blog.csdn.net/u010986753

博客园:http://www.cnblogs.com/xxtalhr/

有问题请在博客下留言或加QQ群:483766429 或联系作者本人 QQ :87605025

OCP培训说明连接:https://mp.weixin.qq.com/s/2cymJ4xiBPtTaHu16HkiuA

OCM培训说明连接:https://mp.weixin.qq.com/s/7-R6Cz8RcJKduVv6YlAxJA

小婷儿的python正在成长中,其中还有很多不足之处,随着学习和工作的深入,会对以往的博客内容逐步改进和完善哒。

小婷儿的python正在成长中,其中还有很多不足之处,随着学习和工作的深入,会对以往的博客内容逐步改进和完善哒。

小婷儿的python正在成长中,其中还有很多不足之处,随着学习和工作的深入,会对以往的博客内容逐步改进和完善哒。

重要的事说三遍。。。。。。

   

最新文章

  1. git使用入门
  2. JS 原型链
  3. C#编码规范 转 http://www.cnblogs.com/wulinfeng/archive/2012/08/31/2664720.html
  4. zepto插件 countdown 倒计时插件 从jquery 改成 zepto
  5. HDU 3068 回文串-Manacher
  6. [ucgui] 对话框3——GUIBuilder生成界面c文件及修改
  7. Python静态方法的使用
  8. SharePoint 2013 Nintex Workflow 工作流帮助(六)
  9. js 调用父窗口的方法
  10. JavaScript垃圾收集-标记清除和引用计数
  11. js,jQuery实现可关闭悬浮框广告特效,兼容(谷歌,火狐,Ie)
  12. 关于js高度和宽度的获取 ----2017-03-29
  13. 如何通过免费开源的ERP Odoo打造企业全员营销整体解决方案
  14. UOJ268 [清华集训2016] 数据交互 【动态DP】【堆】【树链剖分】【线段树】
  15. 【mongoDB高级篇①】聚集运算之group与aggregate
  16. ABP框架系列之五十一:(Timing-定时)
  17. String、StringBuffer、StringBulider
  18. vue-devtoools 调试工具安装
  19. Python 中的面向对象和异常处理
  20. Screen 常用命令+VNC 启动停止命令总结

热门文章

  1. 【10-2】复杂业务状态的处理(从状态者模式到FSM)
  2. MVC 、JDBC、SQL、DBMS、RDBMS、DDL、DML、DCL
  3. 地区picker 各选择器,优劣分析
  4. Unable to open debugger port (127.0.0.1:63777): java.net.BindException "Address
  5. promise的理解和应用
  6. C#版Aliyun DNS API
  7. kafka-hadoop-consumer
  8. VMware Linux下拖拽补丁vmtools的安装和卸载
  9. HDFS hflush hsync和close的区别
  10. django —— 邮件