Scrapy

Eric讨论 | 贡献2023年11月5日 (日) 04:01的版本

Scrapy 是一个开源的网络爬虫框架。

简介

时间轴

快速入门

架构

drawio: Scrapy架构

了解更多 >> Scrapy 文档:Architecture overview


选择器

Scrapy支持使用XPathCSS进行选择。其中CSS选择器底层也转为XPath来实现。可以使用scrapy shell来进行交互式测试选取。

了解更多 >> Scrapy 文档:selectors


选择器生成

选择器可以嵌套使用。

名称 描述 示例
response.selector.xpath() 简写response.xpath() response.xpath("//span/text()")
response.css("img").xpath("@src")选择所有含有src属性的img
response.selector.css() 简写response.css() response.css("span::text")

选择器属性方法

名称 描述 示例
get() 提取匹配第一个的数据,没有返回None,等同于之前版本的extract_first() response.xpath("//title/text()").get()返回标题,没有返回None。
response.xpath("//title/text()").get().get(default="默认值")返回标题,没有返回“默认值”。
getall() 返回列表,所有匹配元素的数据。等同于之前版本的extract() response.css("img").xpath("@src").getall()
attrib 返回匹配元素的属性,当用于列表上,返回第一个元素的属性。 response.css("img").attrib["src"]
response.css("img").attrib["src"]

了解更多 >> Scrapy 文档:selectors


蜘蛛

项目管道

当蜘蛛抓取到item后,会发送到项目管道(Item Pipeline),按项目管道设置的值,按从小到大依次进入不同管道处理。项目管道的典型用途包括:

  • 清理 HTML 数据
  • 验证抓取的数据(检查项目是否包含某些字段)
  • 检查重复项(并删除它们)
  • 将抓取的项目存储在数据库中

了解更多 >> Scrapy 文档: Item Pipeline



编写项目管道

图片下载

内置下载管道

可以使用内置的ImagesPipeline方便下载图片,它会自动处理下载item中image_urls图片链接。

  • 1.在项目settings中开启ImagesPipeline管道。
ITEM_PIPELINES = {
    "scrapy.pipelines.images.ImagesPipeline": 1,
    }
# 设置图片下载路径,绝对路径或相对路径
IMAGES_STORE = "images"
  • 2.爬取图片链接,返回给引擎。
import scrapy

# 可以放入item.py 再导入
class Product(scrapy.Item):
    product_name = scrapy.Field()
    image_urls = scrapy.Field()

class ProductSpider(scrapy.Spider):
    name = 'sample'
    start_urls = ["https://exsample.com"]

    # 也可以为这爬虫设置自定义存储位置。
    #custom_settings = {
    #    'IMAGES_STORE': 'images/sample'
    #}        
    
    def parse(self, response):
        item = Product()
        item['product_name'] = response.xpath('//h1[@class="title"]/text()').get()
        item['image_urls'] = response.xpath('//img[@class="product-img"]/@src').get() 
        yield item

3.启动爬虫

scrapy crawl sample

了解更多 >> Scrapy 文档:文件和图片的下载处理


自定义下载管道

文件下载

内置下载管道

了解更多 >> Scrapy 文档:文件和图片的下载处理


下载器

资源

官网

网站