概念
为了爬取网站数据而编写的一款应用框架,出名,强大。所谓的框架其实就是一个集成了相应的功能且具有很强通用性的项目模板。(高性能的异步下载,解析,持久化……)
安装
- linux mac os:pip install scrapy
- win:
- pip install wheel
- 下载twisted:https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
pip install 下载好的框架.whl
3.pip install pywin32
4.pip install scrapy
基础使用流程
- 创建一个工程:scrapy startproject 工程名称
- 目录结构:
- 在工程目录下创建一个爬虫文件:
- cd 工程
- scrapy genspider 爬虫文件的名称 起始url
- 对应的文件中编写爬虫程序来完成爬虫的相关操作
- 配置文件的编写(settings)
#USER_AGENT = 'redisPro (+http://www.yourdomain.com)'伪装UA USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36' # Obey robots.txt rules ROBOTSTXT_OBEY = False # 取消robots协议
- 执行 scrapy crawl 爬虫文件名称
示例
# -*- coding: utf-8 -*- import scrapy class FirstSpider(scrapy.Spider): # 爬虫文件的名称:通过爬虫文件的名称可以指定定位到某一个爬虫文件 name = 'first' #允许的域名:只能爬取指定域名下的页面数据 allowed_domains = ['www.qiushibaike.com'] #起始url:当前工程将要爬取的页面所对应的url start_urls = ['http://www.qiushibaike.com/'] # 解析方法:对获取的页面数据进行指定内容的解析 # response:根据起始url列表发起请求,请求成功后返回的响应对象 # 返回值:必须为迭代器或者为空 def parse(self, response): print(response) # 获取响应对象的页面数据
# Crawl responsibly by identifying yourself (and your website) on the user-agent USER_AGENT = 'firstblood (+http://www.yourdomain.com)' # 伪装UA #指定终端输出指定种类的日志信息 LOG_LEVEL = 'ERROR' LOG_FILE = 'log.txt' # 存储在指定文件中,不再在终端输出 # Obey robots.txt rules ROBOTSTXT_OBEY = False # 不遵从robots协议