zoukankan      html  css  js  c++  java
  • 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']

     

     

    wps2315.tmp 

     

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

     wps2325.tmp

     

    
    

     

    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)

    wps2326.tmp

     

    6items.py

     

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

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

    2)连接mysql,保存数据

    3)启动mysql (Navicat)

     

    wps2327.tmp 

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

    wps2338.tmp 

    5settingrobotsUSER_AGENTITEM_PIPELINES

    6read.py(修改rules

    wps2339.tmp 

     

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

     

     

     

    欢迎关注小婷儿的博客:

    csdnhttps://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正在成长中,其中还有很多不足之处,随着学习和工作的深入,会对以往的博客内容逐步改进和完善哒。

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

     

     

        wps233A.tmp    wps233B.tmp

     

  • 相关阅读:
    Jsuop Whitelist
    Conductor
    nats
    jersey
    Metrics
    OpenResty api 网关
    DHCP、DHCP Snooping及DHCP relay工作原理入门及实践(转)
    使用派生镜像(qcow2)
    websockify文档
    noVNC使用——访问多台vnc
  • 原文地址:https://www.cnblogs.com/pythonbao/p/9164186.html
Copyright © 2011-2022 走看看