scrapy crawlspider

crawlspider就可以实现上述需求,能够匹配满足条件的url地址,组装成Reuqest对象后自动发送给引擎,同时能够指定callback函数
1.从response中提取所有的满足规则的url地址
2.自动的构造自己requests请求,发送给引擎

1.应用

1) 创建crawlspider爬虫:
scrapy genspider -t crawl job xxx.com

2)CrawlSpider.py

class JobSpider(CrawlSpider):
    name = 'job'
    allowed_domains = ['163.com']
    start_urls = ['https://hr.163.com/position/list.do']

    rules = (
        Rule(LinkExtractor(allow=r'Items/'), callback='parse_item', follow=True),
    )

    def parse_item(self, response):
        i = {}
        #i['domain_id'] = response.xpath('//input[@id="sid"]/@value').extract()
        #i['name'] = response.xpath('//div[@id="name"]').extract()
        #i['description'] = response.xpath('//div[@id="description"]').extract()
        return i

Rule:
Rule表示规则,批量在response中提取url规则
LinkExtractor: 链接提取器,可以通过正则或者是xpath来进行url地址的匹配
callback: 表示经过连接提取器提取出来的url地址响应的回调函数,可以没有,没有表示响应不会进行回调函数的处理
follow: 连接提取器提取的url地址对应的响应是否还会继续被rules中的规则进行提取,默认True表示会,Flase表示不会
process_links: 当链接提取器LinkExtractor获取到链接列表的时候调用该参数指定的方法,这个自定义方法可以用来过滤url,且这个方法执行后才会执行callback指定的方法

LinkExtractor:
allow: 满足括号中的’re’表达式的url会被提取,如果为空,则全部匹配
deny: 满足括号中的’re’表达式的url不会被提取,优先级高于allow
allow_domains: 会被提取的链接的domains(url范围),如:[‘hr.tencent.com’, ‘baidu.com’]
deny_domains: 不会被提取的链接的domains(url范围)
restrict_xpaths: 使用xpath规则进行匹配,和allow共同过滤url,即xpath满足的范围内的url地址会被提取,如:restrict_xpaths=’//div[@class=“pagenav”]’

你可能感兴趣的:(scrapy crawlspider)