zoukankan      html  css  js  c++  java
  • scrapy爬虫系列之五--CrawlSpider的使用

    功能点:CrawlSpider的基本使用

    爬取网站:保监会

    主要代码:

    cf.py

    # -*- coding: utf-8 -*-
    import scrapy
    from scrapy.linkextractors import LinkExtractor
    from scrapy.spiders import CrawlSpider, Rule
    import re
    
    
    class CfSpider(CrawlSpider):    # 继承自CrawlSpider
        """主要是介绍CrawlSpider的用法"""
        name = 'cf'
        allowed_domains = ['circ.gov.cn']
        # 第一次请求的url,如果有特殊需求,可以定义一个parse_start_url函数来处理这个url所对应的响应
        start_urls = ['http://circ.gov.cn/web/site0/tab5240/']
    
        rules = (
            # LinkExtractor 链接提取器,提取url地址
            # callback 可以没有
            # follow 当前url的响应是否重新经过rules来提取url
            # 注意点:
            # 1、两个Rule的callback解析函数,不能直接传递参数
            # 2、如果多个Rule都满足同一个url,会从rules中选择第一个满足的操作
    
            # 详情的url提取器
            Rule(LinkExtractor(allow=r'/web/site0/tab5240/infod+.htm'), callback='parse_item'),
            # 列表的url提取器
            Rule(LinkExtractor(allow=r'/web/site0/tab5240/module14430/paged+.htm'), follow=True),
        )
    
        # parse是发送url请求的,不能在此定义
        # 解析详情页
        def parse_item(self, response):
            item = {}
            # 通过正则匹配
            item["title"] = re.findall("<!--TitleStart-->(.*?)<!--TitleEnd-->", response.body.decode())[0]
            item["publish_time"]  = re.findall("发布时间:(20d{2}-d{2}-d{2})", response.body.decode())[0]
            print(item)
            print("*"*30)
    
        #     # 此处也可以接着构造请求
        #     yield scrapy.Request(
        #         url,
        #         callback=self.parse_detail,
        #         meta={"item": item}
        #     )
        #
        # # 构造其他属性
        # def parse_detail(self, response):
        #     item = response.meta["item"]
        #     item["price"] = 11
        #     yield item
  • 相关阅读:
    docker--Dockerfile
    手动制作docker镜像--cnetos:6.9
    docker 容器的网络访问(端口映射)
    docker容器container
    docker镜像
    29 类中的函数重载
    28,友元的尴尬能力
    27,二阶构造模式(构造函数二阶构造)------对象初始化
    21,对象的构造顺序
    算法
  • 原文地址:https://www.cnblogs.com/bookwed/p/10633734.html
Copyright © 2011-2022 走看看