当前位置: 首页 > news >正文

Scrapy框架爬虫官网的学习

一、安装Scrapy框架

pip install scrapy

二、 创建scrapy框架默认目录

scrapy startproject tutorial
#tutorial为你的项目的名称

该炒作会为您自动创建项目目录

三、项目目录介绍

tutorial/scrapy.cfg            # deploy configuration filetutorial/             # project's Python module, you'll import your code from here__init__.pyitems.py          # project items definition filemiddlewares.py    # project middlewares filepipelines.py      # project pipelines filesettings.py       # project settings filespiders/          # a directory where you'll later put your spiders__init__.py

四、先从第一只爬虫开始吧

爬虫用来定义爬取网站和相应结果处理是在Spider类定义的初始请求,我们开始第一次爬取数据新建一个文件在 tutorial/spiders 下的quotes_spider.py 

import scrapyclass QuotesSpider(scrapy.Spider):#标记爬虫程序,他在项目是唯一的,不同的爬行器用不同的名称name = "quotes"#该方法必须返回一个请求的可迭代数据,爬虫会从第一个数据开始爬取def start_requests(self):urls = ['http://quotes.toscrape.com/page/1/','http://quotes.toscrape.com/page/2/',]for url in urls:yield scrapy.Request(url=url, callback=self.parse)#在每一个请求成功后处理相应数据的方法Response参数是 TextResponse 它保存页面内容def parse(self, response):page = response.url.split("/")[-2]filename = f'quotes-{page}.html'with open(filename, 'wb') as f:f.write(response.body)self.log(f'Saved file {filename}')

如何运行我们的爬虫代码呢?

跳转到项目顶级目录下运行:

scrapy crawl quotes
#quotes为爬虫文件的名称

代码会生成两个文件,类似于这样:、

这种方式可能不是那么快捷,有些操作是没有必要的,我们可以直接这样写

from pathlib import Pathimport scrapyclass QuotesSpider(scrapy.Spider):name = "quotes"#变量名为start_urls  会默认实现start_requests方法,无需书写该方法start_urls  = ["https://quotes.toscrape.com/page/1/","https://quotes.toscrape.com/page/2/",]def parse(self, response):page = response.url.split("/")[-2]filename = f"quotes-{page}.html"with open(filename, 'wb') as f:f.write(response.body)

个人理解就是省却了写一个方法通过命名变量的方式来默认实现 start_urls  方法

五、提取数据

最好的学习方式是使用shell进行学习

在终端上运行:

scrapy shell "http://quotes.toscrape.com/page/1/"

 你可以看到这样的结果:

相关文章:

  • OpenCV 图形API(55)颜色空间转换-----将图像从 RGB 色彩空间转换为 I420 格式函数RGB2I420()
  • 第九章:Agent Protocol Implementation
  • 香港云服务器内存使用率过高如何解决此问题
  • PH热榜 | 2025-04-23
  • 【金仓数据库征文】从 HTAP 到 AI 加速,KingbaseES 的未来之路
  • 《AI大模型应知应会100篇》第35篇:Prompt链式调用:解决复杂问题的策略
  • day4 pandas学习
  • godot源码编译
  • Oracle EBS R12.2 汉化
  • Java从入门到“放弃”(精通)之旅——String类⑩
  • C#学习1_认识项目/程序结构
  • SAP-SD创建SO时报错‘送达方***未对销售范围 **** ** **定义’
  • App自动化测试多设备并行执行方案
  • jumpserver应用
  • MinIO 教程:从入门到Spring Boot集成
  • 【maven-7.1】POM文件中的属性管理:提升构建灵活性与可维护性
  • VS 解决QT项目中文显示乱码问题
  • 一个报错说函数为私有函数
  • 使用 Oracle 数据库进行基于 JSON 的应用程序开发
  • Centos安装Dockers+Postgresql13+Postgis3.1
  • 2025欧亚经济合作发展论坛在沪举办
  • 神二十6个半小时到站
  • 董明珠连任格力电器董事,回应管理层年轻化
  • 著名水声学家陆佶人逝世,曾参加我国第一代核潜艇主动声纳研制
  • 中国与柬埔寨签署产供链经济合作谅解备忘录
  • 商务部:服务业扩大开放试点任务多数来源于经营主体实际需要