• 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
  • 相关阅读:
    [BZOJ 3282] Tree 【LCT】
    [BZOJ 2049] [Sdoi2008] Cave 洞穴勘测 【LCT】
    [BZOJ 1036] [ZJOI2008] 树的统计Count 【Link Cut Tree】
    [HDOJ
    Excel+DDT数据驱动实例
    jenkins+SVN配置
    [转]loadrunner:系统的平均并发用户数和并发数峰值如何估算
    loadrunner:Auto Correlate自动定位瓶颈
    loadrunner:判断是否服务器连接池瓶颈
    利用page_source抓取网页中的URL,进行链接测试
  • 原文地址:https://www.cnblogs.com/bookwed/p/10633734.html
Copyright © 2020-2023  润新知