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
  • 相关阅读:
    Devops运维交流群
    CentOS7.5下二进制安装MySQL5.7.26
    CentOS7.5安装MySQL8.0.18简易流程
    Kubernetes中的Pod生命周期详解
    Linux系统发行版本及其区别
    数据库设计
    Vue 起步
    CSS 中的伪类和伪元素
    百度智能云虚拟主机 Typecho 分类功能失效 | 开启伪静态地址
    C#开发BIMFACE系列39 网页集成开发3:审图系统中三维模型比对
  • 原文地址:https://www.cnblogs.com/bookwed/p/10633734.html
Copyright © 2011-2022 走看看