Scrapy库的安装
打开终端执行pip install scrapy
,也可以使用镜像命令。
Scrapy爬虫框架结构
需要用户编写的只有:SPIDERS模块和ITEM PIPELINES模块
- Engine模块:控制所有模块之间的数据流,不需要用户修改
- Downloader模块:根据请求下载网页,不需要用户修改
- Scheduler模块:对所有爬去请求进行调度管理,不需要用户修改
- Spider模块:解析Downloader返回的响应(Response),产生爬取项(scraped item),产生额外的爬取请求(Request)
- Item Pipelines:以流水线的方式处理Spider产生的爬取项。
Scrapy命令行
Scrapy是为持续运行设计的专业爬虫框架,提供操作Scrapy命令行。
scrapy <command> [options] [args]
命令 | 说明 | 格式 |
---|---|---|
startproject | 创建一个新工程 | scrapy startproject <name> [dir] |
genspider | 创建一个新爬虫 | scrapy genspider [options] <name> <domain> |
setting | 获取爬虫配置信息 | scrapy setting [options] |
crawl | 运行一个爬虫 | scrapy crawl <spider> |
list | 列出工程中的所有爬虫 | scrapy list |
shell | 启动URL调试命令行 | scrapy shell [url] |
Scrapy用法
新建一个工程python123demo:
D:\pydemo>scrapy startproject python123demo
产生一个爬虫demo:
D:\pydemo\python123demo>scrapy genspider demo python123.io
此时在spiders目录下生成了一个demo.py文件
配置产生的spider爬虫:
# -*- coding: utf-8 -*-
import scrapy
class DemoSpider(scrapy.Spider):
name = "demo"
#allowed_domains = ["python123.io"]
start_urls = ['https://python123.io/ws/demo.html']
def parse(self, response):
fname = response.url.split('/')[-1]
with open(fname, 'wb') as f:
f.write(response.body)
self.log('Saved file %s.' % name)
运行爬虫:
D:\pydemo\python123demo>scrapy crawl demo
之后会生成一个html文件