首页 > 编程语言 >【Python】Scrapy 快速入门

【Python】Scrapy 快速入门

时间:2024-09-01 17:03:25浏览次数:10  
标签:入门 Python py 中间件 scrapy 爬虫 Scrapy example

Scrapy介绍

  Scrapy 是一个强大的 Python 爬虫框架

  官网:https://scrapy.org/

  官方文档:https://docs.scrapy.org/en/latest/intro/tutorial.html

  教程参考:https://www.runoob.com/w3cnote/scrapy-detail.html

Scrapy架构概览

  

  Scrapy 中的数据流由执行引擎控制,如下所示:

  1. 引擎从Spider获取初始抓取请求 。

  2. 引擎在调度程序中调度请求 ,并请求抓取下一个请求。

  3. 调度程序将下一个请求返回给引擎。

  4. 引擎通过 下载中间件(参见 )将请求发送给 下载器。process_request()

  5. 一旦页面下载完成, 下载器就会生成一个响应(包含该页面)并通过下载器中间件将其发送到引擎 (参见 process_response())。

  6. 引擎从下载器接收响应 并将其发送到 Spider进行处理,传递过程经过Spider 中间件(参见 )。process_spider_input()

  7. Spider处理响应并 通过 Spider 中间件(参见 )将抓取的项目和新的请求(待跟进)返回给引擎。process_spider_output()

  8. 引擎将处理过的项目发送到 项目管道,然后将处理过的请求发送到调度程序并询问可能的下一个要抓取的请求。

  9. 该过程重复(从步骤 3 开始),直到不再有来自 调度程序的请求。

Scrapy安装

  安装 Scrapy:
  命令:pip install scrapy

Scrapy项目

1. 创建一个新的 Scrapy 项目:

scrapy startproject myproject
cd myproject

2. 项目结构

myproject/
    scrapy.cfg            # 开发配置文件

    myproject/             # 项目的python模块
        __init__.py

        items.py          # 项目数据模型定义文件

        middlewares.py    # 项目中间件文件

        pipelines.py      # 项目管道文件

        settings.py       # 项目设置文件

        spiders/          # 爬虫目录,里面放的是编写的爬虫文件
            __init__.py

3. 生成一个新的爬虫:

  在myproject/spiders目录中,执行命令

scrapy genspider example example.com
 example  爬虫名字, example.com 对应网站

4. 编辑爬虫文件(例如 `myproject/spiders/example.py`):

import scrapy

class ExampleSpider(scrapy.Spider):
    name = 'example'
    allowed_domains = ['example.com']
    start_urls = ['https://example.com']

    def parse(self, response):
        # 提取数据 xpath提取数据
img_list = response.xpath("//div[@class='tea_con']//ul/li/img/@src")
name_list = response.xpath("//div[@class='tea_con']//ul/li/div[@class='li_txt']/h3/text()")
     # 直接返回最后数据
     # return items

5. 运行爬虫:

  在myproject/spiders目录中,执行命令

scrapy crawl example

6. 保存数据:

  要将爬取的数据保存到文件,可以在运行爬虫时指定输出格式:

scrapy crawl example -O output.json

7. 设置和中间件:

  - 在 `settings.py` 文件中配置爬虫设置,如 User-Agent、下载延迟等。
  - 使用中间件处理请求和响应,例如处理 cookies 或代理。

8. 项目管道:

  在 `pipelines.py` 中定义数据处理管道,用于清理、验证或存储数据。

9. 使用 Item 和 ItemLoader:

  - 在 `items.py` 中定义结构化数据项。

  - 使用 ItemLoader 来填充 Item 对象,提供了一种灵活的方式来提取和处理字段。

10. 调试和日志:

  使用 Scrapy shell 进行交互式调试:

scrapy shell "http://example.com"

11. 遵守 robots.txt:

  默认情况下,Scrapy 遵守 robots.txt 规则。可以在设置中修改这个行为。

  在 `settings.py` 文件中配置有配置,如果不遵守则改为False

 

标签:入门,Python,py,中间件,scrapy,爬虫,Scrapy,example
From: https://www.cnblogs.com/h--d/p/18391455

相关文章

  • 几分钟带你入门python GUI框架tkinter
    一、Tkinter是什么?Tkinter是Python的标准GUI库。Python与Tkinter结合使用时,提供了一种快速简便的方法来创建GUI应用程序。Tkinter为TkGUI工具包提供了一个强大的面向对象的接口。二、使用Tkinter创建GUI应用程序的基本步骤:1.安装python首先,确保你已经安......
  • 20240901_151114 python 项目 获取需要的视频
    需求有一个视频素材目录当中有很多的视频现在需要根据音频素材的时长获取需要的视频内容编程完成项目把生成的视频存放在结果目录中分析音频的时长不同所需要的视频个数也不同视频的长度不同需要对每一个视频进行等时长的截取(例如每个视频只截取3秒钟)用户有可能一次提......
  • 【量化分析】Python、JavaScript(Node.js)、Java、C#和Ruby五种主流语言的实例代码给大
    最近一两年,股票量化分析越来越受欢迎了。想要入行,首先得搞定股票数据。毕竟,所有量化分析都是建立在数据之上的,实时交易、历史交易、财务、基本面,这些数据咱们都得有。咱们的目标就是挖掘这些数据中的价值,来指导咱们的投资策略。​为了找数据,我可是尝试了各种方法,自己动手......
  • 【python学习】第一次学习编程的时候,我怀疑过自己是不是太笨了,还好后来发现
    你是如何克服编程学习中的挫折感的?面对今天的这个主题,我深有感触,我必须分享一个关于我自己的真实的故事,希望它能够给每一个初学者带来一些鼓励和启发。相信自己,其实,编程没什么困难的。第一次学习python的经历在我第一次学习python的时候,上的是python的基础课程,当时教室里......
  • [开题报告]flask框架党员管理系统的设计与实现9cwt8【开题+程序+论文】(python+程序+论
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,传统的党员管理方式已难以适应新时代党建工作的需求。党员数量的增加、管理复杂度的提升以及对高效、透明管理模式......
  • [开题报告]flask框架的场馆预订系统的设计与实现d6551(程序+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在当今社会,随着人们健康意识的增强和体育运动的普及,体育场馆作为人们进行体育锻炼的重要场所,其管理和预订方式的高效性、便捷性显得尤为重......
  • [开题报告]flask框架的乐居房屋租售平台的设计与实现(程序+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着城市化进程的加快和人口流动性的增强,房屋租售市场日益活跃,成为连接广大租房者与房东的重要桥梁。然而,传统的房屋租售方式往往存在信息......
  • [开题报告]flask框架的旅游信息管理系统设计与实现(程序+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着旅游业的蓬勃发展,旅游信息管理成为提升旅游服务质量和效率的关键环节。传统的旅游管理方式往往存在信息不对称、更新滞后、操作繁琐等......
  • Python自动复制Excel数据:将各行分别重复指定次数
      本文介绍基于Python语言,读取Excel表格文件数据,并将其中符合我们特定要求的那一行加以复制指定的次数,而不符合要求的那一行则不复制;并将所得结果保存为新的Excel表格文件的方法。  这里需要说明,在我们之前的文章多次复制Excel符合要求的数据行:Python批量实现中,也介绍过实现......
  • Python 图片去重,删除重复图片
    删除文件夹中相似图片的任务比较复杂,因为需要定义“相似”的标准,并且这通常涉及到图像内容分析。一种常见的做法是使用图像哈希(如感知哈希、平均哈希等)来比较图像之间的相似度。在Python中,可以使用一些库如Pillow(PIL的更新版)来处理图像,以及ImageHash库来生成图像哈希。下面......