0
点赞
收藏
分享

微信扫一扫

TopShelf 将控制台程序部署到Windows服务

程序猿不脱发2 2024-08-06 阅读 19

Python 爬虫入门(八):爬虫工程化及Scrapy简介「详细介绍」

前言

1. Python

1.1 Python 简介

1.2 Python 爬虫的优势

  1. 简洁易用:Python 语法简洁,容易上手,非常适合快速开发和原型设计。
  2. 丰富的库和框架:Python 拥有如 requests、BeautifulSoup、Scrapy 等众多库和框架,大大简化了爬虫开发的工作。
  3. 强大的社区支持:Python 拥有庞大的开发者社区,遇到问题时可以很容易找到解决方案。

1.3 必须掌握的 Python 基础知识

1.3.1 基本语法

  • 数据类型

    # 整数
    num = 10
    # 浮点数
    pi = 3.14
    # 字符串
    greeting = "Hello, World!"
    # 列表
    fruits = ["apple", "banana", "cherry"]
    # 元组
    coordinates = (10.0, 20.0)
    # 字典
    person = {"name": "Alice", "age": 30}
    # 集合
    unique_numbers = {1, 2, 3, 4}
    
  • 控制结构

    # if 语句
    if num > 0:
        print("Positive number")
    else:
        print("Non-positive number")
    
    # for 循环
    for fruit in fruits:
        print(fruit)
    
    # while 循环
    count = 0
    while count < 3:
        print(count)
        count += 1
    
    # 异常处理
    try:
        result = 10 / 0
    except ZeroDivisionError:
        print("Cannot divide by zero")
    finally:
        print("Execution complete")
    

1.3.2. 函数和模块

  • 函数定义和调用

    def greet(name):
        return f"Hello, {name}!"
    
    message = greet("Bob")
    print(message)
    
  • 模块和包

    # 导入标准库模块
    import math
    print(math.sqrt(16))
    
    # 使用自定义模块
    # my_module.py 文件内容
    def add(a, b):
        return a + b
    
    # main.py 文件内容
    import my_module
    result = my_module.add(5, 3)
    print(result)
    

1.3.3 文件操作

  • 文件读写

    # 写入文件
    with open("example.txt", "w") as file:
        file.write("Hello, File!")
    
    # 读取文件
    with open("example.txt", "r") as file:
        content = file.read()
        print(content)
    
  • 文件路径操作

    from pathlib import Path
    
    # 创建路径对象
    path = Path("example.txt")
    # 获取文件名
    print(path.name)
    # 获取文件扩展名
    print(path.suffix)
    

1.3.4 数据处理

  • 字符串操作

    text = "  Hello, World!  "
    # 去除空白
    stripped_text = text.strip()
    print(stripped_text)
    
    # 字符串分割
    words = stripped_text.split(", ")
    print(words)
    
  • 正则表达式

    import re
    
    pattern = r"\d+"  # 匹配数字
    text = "The year is 2024"
    matches = re.findall(pattern, text)
    print(matches)
    

1.3.5 类和对象

  • 面向对象编程
    class Person:
        def __init__(self, name, age):
            self.name = name
            self.age = age
    
        def greet(self):
            return f"Hello, my name is {self.name} and I am {self.age} years old."
    
    person = Person("Alice", 30)
    print(person.greet())
    

1.3.6 异常处理

  • 错误捕获
    try:
        with open("nonexistent_file.txt", "r") as file:
            content = file.read()
    except FileNotFoundError:
        print("File not found")
    except Exception as e:
        print(f"An error occurred: {e}")
    

2. Scrapy

2.1 Scrapy 简介

2.2 Scrapy 的特点

2.3 Scrapy 的工作流程

在这里插入图片描述

3. Scrapy 的核心组件

在深入学习如何使用 Scrapy 之前,我们先了解一下 Scrapy 的核心组件。

3.1 Spider

Spider 是 Scrapy 中最核心的组件,负责定义爬取逻辑和数据提取规则。每个 Spider 都是一个独立的类,继承自 scrapy.Spider,并实现一些关键的方法,如 start_requestsparse

3.2 Item

Item 是用来定义抓取的数据结构的类。它类似于数据库中的表结构,用于存储爬取到的数据。

3.3 Item Pipeline

Item Pipeline 用于处理和存储抓取到的数据。它是一个独立的模块,负责对 Item 进行处理,例如清洗数据、验证数据和将数据存储到数据库中。

3.4 Selector

Selector 是 Scrapy 提供的数据提取工具,用于从 HTML 或 XML 文档中提取数据。Selector 支持 XPath 和 CSS 选择器两种方式。

3.5 Downloader Middleware

Downloader Middleware 是 Scrapy 中用于处理请求和响应的中间件。它可以在请求发送之前和响应到达之后进行处理,例如添加请求头、处理重定向等。

3.6 Scheduler

Scheduler 是 Scrapy 中用于管理请求队列的组件。它负责将请求添加到队列中,并按照一定的顺序发送请求。

3.7 Engine

Engine 是 Scrapy 的核心引擎,负责协调 Spider、Scheduler、Downloader 和 Item Pipeline 之间的工作流。

举报

相关推荐

0 条评论