python爬虫之路scrapy

python里面的yield怎么用?
yield from是什么意思?

scrpay

The best way to learn is with examples, and Scrapy is no exception.

常用命令
scrapy startporject
scrapy crawl hello
scrapy shell http://www.qq.com

打开页面
提取数据
保存参数

scrapy概述

就如同web开发有框架flask spring等等,爬虫也是有框架的,scrapy就是一个爬虫框架,或者说是爬虫引擎。

安装

pip3 install scrapy

使用

以爬取这个网站为例子 quotes.toscrape.com

  1. 第一创建一个爬虫应用。
    scrapy startproject tutorial
    目录结构如下
    在这里插入图片描述
  2. 第二步写一个爬虫。爬取网站提取数据。

class 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)

    def parse(self, response):
        page = response.url.split("/")[-2]
        filename = 'quotes-%s.html' % page
        with open(filename, 'wb') as f:
            f.write(response.body)
        self.log('Saved file %s' % filename)

解释说明
start_requests()
parse()

运行爬虫
scrapy crawl quotes

保存数据
parse yield的结果可以持久化的保存起来

follow links
首先定位到页面的links,注意这里的links可能是相对的,要进行转换
你可以在parse里面yield scrapy.Request,
response.follow 是Request的快捷写法

使用参数
使用场景,例如外部调用爬虫任务传递一个参数过来

  1. 第三步。在命令行里面导出爬取的数据。
    可以通过shell进行调试
    scrapy shell 'http://quotes.toscrape.com/page/1/'

view(response) 可以在浏览器里面打开

  1. 第四步递归爬取链接。
  2. 第五步使用爬虫参数。

scrapy架构

在这里插入图片描述

遗留问题

scrapy可以部署成一个服务吗?

posted @ 2022-03-06 10:38  叶常落  阅读(17)  评论(0编辑  收藏  举报