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

发布于:2025-08-08 ⋅ 阅读:(14) ⋅ 点赞:(0)

目录

一、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, Rule


class 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)。​
  • 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 的基本用法。下一篇文章将深入探讨爬虫的优化技巧,包括反爬处理、数据存储等高级内容。


网站公告

今日签到

点亮在社区的每一天
去签到