Scrapy 框架(二)数据的持久化
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正在成长中,其中还有很多不足之处,随着学习和工作的深入,会对以往的博客内容逐步改进和完善哒。
重要的事说三遍。。。。。。
最新文章
- git使用入门
- JS 原型链
- C#编码规范 转 http://www.cnblogs.com/wulinfeng/archive/2012/08/31/2664720.html
- zepto插件 countdown 倒计时插件 从jquery 改成 zepto
- HDU 3068 回文串-Manacher
- [ucgui] 对话框3——GUIBuilder生成界面c文件及修改
- Python静态方法的使用
- SharePoint 2013 Nintex Workflow 工作流帮助(六)
- js 调用父窗口的方法
- JavaScript垃圾收集-标记清除和引用计数
- js,jQuery实现可关闭悬浮框广告特效,兼容(谷歌,火狐,Ie)
- 关于js高度和宽度的获取 ----2017-03-29
- 如何通过免费开源的ERP Odoo打造企业全员营销整体解决方案
- UOJ268 [清华集训2016] 数据交互 【动态DP】【堆】【树链剖分】【线段树】
- 【mongoDB高级篇①】聚集运算之group与aggregate
- ABP框架系列之五十一:(Timing-定时)
- String、StringBuffer、StringBulider
- vue-devtoools 调试工具安装
- Python 中的面向对象和异常处理
- Screen 常用命令+VNC 启动停止命令总结
热门文章
- 【10-2】复杂业务状态的处理(从状态者模式到FSM)
- MVC 、JDBC、SQL、DBMS、RDBMS、DDL、DML、DCL
- 地区picker 各选择器,优劣分析
- Unable to open debugger port (127.0.0.1:63777): java.net.BindException ";Address
- promise的理解和应用
- C#版Aliyun DNS API
- kafka-hadoop-consumer
- VMware Linux下拖拽补丁vmtools的安装和卸载
- HDFS hflush hsync和close的区别
- django —— 邮件