创建第一个Scrapy项目
d:
进入D盘
scrapy startproject tutorial
建立一个新的Scrapy项目
cd tutorial
进入项目路径
scrapy genspider quotes toscrape.com
建立一个新的爬虫
工程的目录结构:
tutorial/
scrapy.cfg # 部署配置文件
tutorial/ # 项目的Python模块,您将从这里导入代码
__init__.py
items.py # 项目项目定义文件
middlewares.py # 项目中间件文件
pipelines.py # 项目管道文件
settings.py # 项目设置文件
spiders/ # 一个目录,你以后会把你的爬虫放进去
__init__.py
新建quotes_spider.py:
import scrapy
class QuotesSpider(scrapy.Spider):
# QuotesSpider类继承scrapy.Spider类
name = "quotes"
# 标识蜘蛛。它在项目中必须是唯一的,也就是说,不能为不同的蜘蛛设置相同的名称
def start_requests(self):
# 必须返回Spider将开始抓取的请求的迭代(您可以返回请求列表或编写生成器函数)
# 后续请求将从这些初始请求中连续生成
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):
# 将被调用来处理为每个请求下载的响应的方法。
# 响应参数是TextResponse保存页面内容的一个实例,并有更多有用的方法来处理它
# 该parse()方法通常解析响应,将提取的数据提取为字符串,并查找新的URL并Request根据它们创建新的请求
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)
scrapy crawl quotes
运行爬虫
已经创建了两个新文件:quotes-1.html和quotes-2.html,以及各个URL的内容,正如我们的parse方法所指示的那样