当前位置:首页>python>Python爬虫进阶版本-Scrapy库

Python爬虫进阶版本-Scrapy库

  • 2026-09-08 03:47:59
Python爬虫进阶版本-Scrapy库

“ 给我一分钟 我想让知识闯进你的脑子!!!”

Scrapy 是一个功能强大的python爬虫框架,专门用于抓取网页数据并提取信息。

Scrapy 内置了许多有用的功能,如处理请求、跟踪状态、处理错误、处理请求频率限制等,非常适合进行高效、分布式的网页爬取。

与简单的爬虫库(如 requests 和 BeautifulSoup)不同,Scrapy 是一个全功能的爬虫框架,具有高度的可扩展性和灵活性,适用于复杂和大规模的网页抓取任务。

关于BeautifulSoup可以看我上一篇文章使用起来非常简单

01

—

安装

pip3 install scrapy

查看下版本

02

—

创建项目

你可以使用以下命令创建一个新的 Scrapy 项目:
scrapy startproject myproject

03

—

创建爬虫文件

scrapy startproject runoob_test_spiders

04

—

编写爬虫代码

import scrapy #导入scrapyclass DoubanSpiderSpider(scrapy.Spider):    #定义爬虫名称-唯一    name = "douban_spider"    #限制爬虫的网页域名,防止爬到其他域名    allowed_domains = ["movie.douban.com"]    #爬虫启始页地址    start_urls = ["https://movie.douban.com/top250"]    def start_requests(self):        #请求头 模拟真实的浏览器请求        headers = {            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',            'Referer': 'https://movie.douban.com/top250',        }        for url in self.start_urls:            yield scrapy.Request(url, headers=headers, callback=self.parse)    def parse(self, response):        #用 CSS 选择器查找所有 class="item" 的 div 元素(每部电影是一个 item)        for movie in response.css('div.item'):            yield {                #提取第一个 <span class="title"> 的文本内容                'title': movie.css('span.title::text').get(),                 #提取评分(<span class="rating_num">9.7</span> → "9.7")                'rating': movie.css('span.rating_num::text').get(),                #提取经典台词(<span class="inq">希望让人自由。</span>)                'quote': movie.css('span.inq::text').get(),            }        # 处理分页        next_page = response.css('span.next a::attr(href)').get()        if next_page is not None:            yield response.follow(next_page, callback=self.parse)    # def parse(self, response):    #     pass

05

—

运行代码

scrapy crawl douban_spider -o douban_movies.csv

06

—

查看

最新文章

随机文章