python爬虫-初识scrapy框架
什么是scrapy框架
介绍
Scrapy是适用于Python的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。
Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。
它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。
基本功能
Scrapy是一个适用爬取网站数据、提取结构性数据的应用程序框架,它可以应用在广泛领域:Scrapy 常应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。
通常我们可以很简单的通过 Scrapy 框架实现一个爬虫,抓取指定网站的内容或图片。
尽管Scrapy原本是设计用来屏幕抓取(更精确的说,是网络抓取),但它也可以用来访问API来提取数据。
scrapy环境安装
这里建议使用conda建立独立的环境或者是在pycharm中来安装scrapy
pip install scrapy
scrapy基本使用
1. 创建工程
cd xxx # 进入到项目指定目录
scrapy startproject study_scrapy01 # 创建一个名为study_scrapy01的工程
显示创建成功
New Scrapy project 'study_scrapy01', using template directory '/Users/soutsukyou/opt/anaconda3/lib/python3.8/site-packages/scrapy/templates/project', created in:
/Users/soutsukyou/PyCharm_Workspace/网络爬虫/study_scrapy/study_scrapy01
You can start your first spider with:
cd study_scrapy01
scrapy genspider example example.com
项目结构
2. 在spiders子目录下创建一个爬虫文件
cd study_scrapy01 # 进入你创建的项目
scrapy genspider spider_01 www.baidu.com # 生成一个爬虫文件 名为:spider_01 网址为:www.baidu.com
返回结果,这是你会发现你的spiders目录下多了一个 spide_01.py 的文件
Created spider 'spider_01' using template 'basic' in module:
study_scrapy01.spiders.spider_01
3. 编写爬虫文件
新创建的spide_01.py文件还没有任何爬取方法,我们需要详细它。
import scrapy
class Spider01Spider(scrapy.Spider):
# 爬虫文件的名称
name = 'spider_01'
# 允许的域名,该列表用来限定start_urls列表中的url那些可以请求发送
# 一般不会让这个里面有值,或者不使用它
# 假如要爬取一个网站中图片,那么这个网站的图片不一定是在这个网站的域名之下
allowed_domains = ['www.baidu.com']
# 起始的url列表,该列表中的url会被scrapy自动的进行请求发送
start_urls = ['http://www.baidu.com/']
# 用于数据解析,response就是请求成功后的响应对象
def parse(self, response):
print(response)
4. 修改settings.py配置文件
君子协议,这个君子不当也罢(歪嘴)
# Obey robots.txt rules
ROBOTSTXT_OBEY = False
# 仅输出错误日志
LOG_LEVEL = 'ERROR'
5. 执行工程文件
scrapy crawl spider_01