CrawlSpider的使用方法

首先使用cmd创建项目,创建完成之后,修改start_urls之后就可以开始写rules

cd    至目标文件夹下
scrapy startproject  project_name    创建crawlspider项目
cd    project_name     至项目文件夹中
scrapy   genspider  -t   crawlspider    spider_name   allowed_domains    创建爬虫文件

1.LinkExtracts
可以提取想要的url,然后发送请求。这些⼯作都可以交给LinkExtractors,会在所有爬的⻚⾯中找到满⾜规则的url, 实现⾃动的爬取

主要参数:
 allow:需要提取的url,使用正则表达式提取
deny:不需要的url。所有满⾜这个正则表达式的url都不会被提取。
allow_domains:  只有在这个⾥⾯指定的域名的url才会被提 取。 
deny_domains:  所有在这个⾥⾯指定的域名的url都不会被 提取。 
restrict_xpaths:   使用xpath提取url。和allow共同过滤链接。

2.Rule

LinkExtracts:    用于定义爬取url的规则
callback:    满⾜这个规则的url,应该要执⾏哪个回调函数。因为 CrawlSpider使⽤了parse作为回调函数,因此不要覆盖parse作为回调函 数⾃⼰的回调函数。 
follow:    response中的url是否需要继续提取
process_links:从linkextractor中获取到链接后会传递给这个函数,⽤来过滤不需要爬取的链接。

爬取阳光政务平台数据代码如下:

import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule

class Yg2Spider(CrawlSpider):
    name = 'yg2'
    allowed_domains = ['wz.sun0769.com']
    start_urls = ['http://wz.sun0769.com/index.php/question/questionType?type']

    rules = (
        Rule(LinkExtractor(allow=r'wz.sun0769.com/index.php/question/report?page=\d+'), follow=True),

        Rule(LinkExtractor(allow=r'wz.sun0769.com/html/question/202003/\d+.shtml'), callback='parse_item'),
    )

    def parse_item(self, response):
        item = MyspiderItem()
        item['name'] = response.xpath('//div[@class="wzy3_2"]/span/text()').get()

        item['domain_id'] = response.xpath('//input[@id="sid"]/@value').get()
        item['name'] = response.xpath('//div[@id="name"]').get()
        item['description'] = response.xpath('//div[@id="description"]').get()
        return item
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值