其他分享
首页 > 其他分享> > Scrapy中的crawlspider爬虫

Scrapy中的crawlspider爬虫

作者:互联网

crawlspider

介绍

Scrapy框架中分两类爬虫

Spider类和CrawlSpider类。

crawlspider是Spider的派生类(一个子类),Spider类的设计原则是只爬取start_url列表中的网页,而CrawlSpider类定义了一些规则(rule)来提供跟进link的方便的机制,从爬取的网页中获取link并继续爬取的工作更适合。

创建模板

创建 crawlspider 项目
scrapy genspider -t crawl 爬虫名 爬虫运行抓取的域名范围

栗子:

scrapy genspider -t crawl job_163 hr.163.com

具体参数和解释

import scrapy
from scrapy.linkextractors import LinkExtractor  # 连接提取器
from scrapy.spiders import CrawlSpider, Rule    # 导入CrawlSpider类,Rule规则

# CrawlSpider
class Job163Spider(CrawlSpider):
    name = 'job_163'
    allowed_domains = ['hr.163.com']
    start_urls = ['http://hr.163.com/']

    # 规则的元祖 规则可以有多个 存放 规则 对象
    rules = (
        # 创建了一个规则对象
        # LinkExtractor: 连接提取对象,allow 跟的是一个正则,根据这个正则表达式从响应中自动的去提取符合规则的url地址
        # callback: 指定 前面根据连接提取器规则 提取出来的url地址的响应交给哪一个解析函数去处理,接收的是一个方法名的字符串
        # callback 如果传了 表示需要去解析这个响应
        # callback 如果没传 表示不需要去解析这个响应
        # follow: 表示是否跟进,表示根据连接提取器提取出来的url地址的响应,是否还需要按照连接提取器的规则继续去提取url地址

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

    def parse_item(self, response):
        item = {}
        #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

重点在rules中:

链接提取器LinkExtractor的更多常见参数

标签:xpath,提取,url,crawlspider,爬虫,item,Scrapy,规则,CrawlSpider
来源: https://blog.csdn.net/LeFran/article/details/118640227