IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python爬虫从入门到精通:(35)CrawlSpider基础_Python涛哥 -> 正文阅读

[Python知识库]Python爬虫从入门到精通:(35)CrawlSpider基础_Python涛哥

CrawlSpider:

概念:其实是Spider的一个子类。Spider是爬虫文件中爬虫类的父类.

  • 子类的功能一定是多余父类.

作用:被用作于专业实现全站数据爬取

  • 将一个页面下所有页面对应的数据进行爬取

基本使用:

  1. 创建一个工程
  2. cd 工程
  3. 创建一个基于CrawlSpider的爬虫文件
    • scrapy genspider -t crawl SpiderName www.xxx.com

示例

创建一个工程crawlPro

  1. scrapy startproject crawlPro
  2. cd crawlPro
  3. scrapy genspider -t crawl first www.xxx.com
  4. 修改配置文件(跟之前正常操作一样)

创建出来的应该是这样:

在这里插入图片描述

任务:爬取校花网源码里的所有链接

http://www.521609.com/daxuexiaohua/

我们先来介绍下下面这段代码:

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

rules:定义抽取链接的规则。

LinkExtractor:链接提取器。

callback:回调函数。也就是解析数据的函数。

follow:

  • True:爬取所有页。
  • False:只爬取当前页面。

实例化LinkExtractor对象.

链接提取器:根据规则(allow参数) ,在页面中进行(url)爬取.

allow=‘正则’:提取链接的规则.

在这里插入图片描述

根据链接的规律,我们来写下正则:

# 实例化LinkExtractor对象
# 链接提取器:根据规则(allow参数) ,在页面中进行(url)爬取
# allow='正则':提取链接的规则
link = LinkExtractor(allow=r'/daxuexiaohua/\d{1,10}\.html')
rules = (
  	# 这里我们先爬取当前页测试下。follow=False
    Rule(link, callback='parse_item', follow=False),
)

运行工程,看下效果:

scrapy crawl first

在这里插入图片描述

链接就获取到了。

全部代码first.py

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


class FirstSpider(CrawlSpider):
    name = 'first'
    # allowed_domains = ['www.xxx.com']
    start_urls = ['http://www.521609.com/daxuexiaohua/']

    # 实例化LinkExtractor对象
    # 链接提取器:根据规则(allow参数) ,在页面中进行(url)爬取
    # allow='正则':提取链接的规则
    link = LinkExtractor(allow=r'/daxuexiaohua/\d{1,10}\.html')
    rules = (
      	# 实例化一个Rule对象
        # 规则解析器:接收链接提取器提取到的链接,对其发起请求,然后根据指定规则(callback)解析数据
        Rule(link, callback='parse_item', follow=False),
    )

    def parse_item(self, response):
        print(response)

怎么爬取该页面的所有链接呢?

其实就是一句代码:

link = LinkExtractor(allow=r'')

在这里插入图片描述

怎么过滤不是521609.com的链接?

# 打开设置allowed_domains即可
allowed_domains = ['521609.com']


注意

  1. 一个链接提取器对应一个规则解析器(多个链接提取器和多个规则解析器)
  2. 在实现深度爬取的过程中需要和scrapy.Requests()结合使用

下节课讲CrawlSpider实现深度爬取

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-10-19 11:50:09  更:2021-10-19 11:50:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 11:49:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计