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

Scrapy(一):轻松爬取图片网站内容​

目录

一、CrawlSpider 简介​

二、实战案例:图片网站爬取​

三、代码解析:核心组件详解​

类定义:

        2.核心属性:​

        3.爬取规则(Rules):​

        4.数据提取方法(parse_item):​

四、运行与调试​

五、常见问题解决​

        1.链接提取失败

        2.爬取范围失

         3.  重复爬取


在网络数据采集领域,Scrapy 框架以其高效、灵活的特性深受开发者青睐。本文将以爬取 4K 美女图片网站为例,详细讲解 Scrapy 中 CrawlSpider 的基础用法,帮助初学者快速掌握全站爬取技巧。​

一、CrawlSpider 简介​

CrawlSpider 是 Scrapy 提供的一种高级爬虫类,特别适合对整站内容进行爬取。它通过定义爬取规则(Rule),可以自动跟进链接并提取数据,极大简化了爬虫的开发流程。与基础的 Spider 相比,CrawlSpider 更擅长处理具有一定结构的网站,如新闻网站、电商平台等。​

二、实战案例:图片网站爬取​

以下是本次使用的基础爬虫代码:​

from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Ruleclass TupianSpider(CrawlSpider):name = "tupian"# allowed_domains = ["pic.netbian.com"]start_urls = ["https://pic.netbian.com/4kmeinv/"]rules = (Rule(LinkExtractor(restrict_xpaths=('//*[@id="main"]/div[4]/ul/li')), callback="parse_item", follow=True),Rule(LinkExtractor(restrict_xpaths=('//*[@id="main"]/div[5]/a')),  follow=True)  #翻页,不需要回调函数)def parse_item(self, response):item = {}print(response.xpath('//*[@id="main"]/div[3]/div[1]/div[1]/h1').extract_first())return item

三、代码解析:核心组件详解​

  1. 类定义:

TupianSpider继承自CrawlSpider,这是使用 CrawlSpider 的基础。​

        2.核心属性:​

  • name:爬虫名称,用于在命令行启动爬虫时使用(如scrapy crawl tupian)。​
  • start_urls:起始 URL 列表,爬虫从这些 URL 开始爬取。这里设置为 "https://pic.netbian.com/4kmeinv/",即 图片分类页。​
  • allowed_domains:可选属性,用于限制爬虫只在指定域名下爬取。本例中注释掉该属性,允许爬虫跟进所有相关链接。​

        3.爬取规则(Rules):​

  • 规则是 CrawlSpider 的核心,由Rule对象组成的元组。每个Rule定义了一种链接提取和处理方式。​
  • 第一个规则:LinkExtractor(restrict_xpaths=('//*[@id="main"]/div[4]/ul/li'))表示使用 XPath 提取符合条件的链接,这些链接对应图片详情页。callback="parse_item"指定用parse_item方法处理这些链接的响应,follow=True表示继续跟进该页面中的链接。​
  • 第二个规则:用于提取翻页链接,follow=True确保爬虫能自动爬取多页内容,由于翻页链接不需要直接提取数据,因此没有指定callback。​

        4.数据提取方法(parse_item):​

该方法用于处理详情页响应,通过 XPath 提取图片标题(//*[@id="main"]/div[3]/div[1]/div[1]/h1)并打印。实际应用中,可根据需求提取更多信息,如图片 URL、发布时间等。​

四、运行与调试​

保存代码为tupian_spider.py,放入 Scrapy 项目的spiders目录下。​

在项目根目录执行命令:scrapy crawl tupian启动爬虫。​

观察控制台输出,若能正常打印图片标题,说明爬虫运行成功。​

五、常见问题解决​

        1.链接提取失败

检查 XPath 表达式是否正确,可使用 Scrapy Shell(scrapy shell URL)测试 XPath。​

        2.爬取范围失

合理设置allowed_domains属性,避免爬虫跳转到无关网站。​

         3.  重复爬取

Scrapy 默认会过滤重复 URL,无需额外处理。​

通过本文的学习,相信你已掌握 CrawlSpider 的基本用法。下一篇文章将深入探讨爬虫的优化技巧,包括反爬处理、数据存储等高级内容。

http://www.lryc.cn/news/611833.html

相关文章:

  • 安宝特方案丨工业AR+AI质检方案:致力于提升检测精度与流程效率
  • linux-系统性能监控
  • Python爬虫实战:研究spiderfoot工具,构建网络情报收集系统
  • python每日一题 贪心算法
  • 线程-线程池篇(二)
  • 基于Hadoop的木鸟民宿数据分析与可视化、民宿价格预测模型系统的设计与实现
  • 使用 gptqmodel 量化 Qwen3-Coder-30B-A3B-Instruct
  • MyBatis基础操作完整指南
  • smart-water表设计方案
  • 百度华为硬件笔试机试题-卷4
  • 希赛《华为 HCIA-Datacom 》核心考点之 NAT 技术解析
  • 解决远程连接云服务器mysql编号1130问题
  • 文本编码扫盲及设计思路总结
  • 应急响应排查(windows版)
  • JAVA高级编程第七章
  • 【Linux系统】进程间通信:命名管道
  • 嵌入式处理器指令系统:精简指令集RISC与复杂指令集CISC的简介,及区别
  • Chrontel 昆泰【CH7107B-BF】CH7107B ——HDMI to CVBS Converter
  • 【arcmap中shp图层数据导入到postgresql数据库中,中文出现乱码,怎么办?】
  • 使用 Maxwell 和 RabbitMQ 监控 Mysql Flowable 表变更
  • 医学影像PACS系统的设计与实现,PACS系统源码
  • LMS/NLMS最小均值算法:双麦克风降噪
  • python中的推导式
  • YOLOv5 上使用 **labelImg** 标注并训练自己的数据集
  • PyTorch生成式人工智能——Hugging Face环境配置与应用详解
  • 【32】C++实战篇—— m行n列的坐标点,求每行相邻点X差值dX,每列相邻点y差值dY,并以矩阵形式左端对齐
  • 远程连接----ubuntu ,rocky 等Linux系统,WindTerm_2.7.0
  • Spring选择哪种方式代理?
  • 阿里云DMS Data Copilot——高效智能的数据助手,助力企业实现数据驱动的未来
  • 深入理解 Maven POM 文件:核心配置详解