📅  最后修改于: 2023-12-03 15:05:06.026000             🧑  作者: Mango
Scrapy是一个用于抓取Web站点并从中提取结构化数据的Python框架。在本文中,我们将介绍如何使用Scrapy创建项目并开始抓取网站。
在开始之前,您需要先安装Scrapy。您可以通过运行以下命令在终端中安装Scrapy:
pip install scrapy
现在我们可以使用Scrapy命令创建一个新项目。请打开终端并运行以下命令:
scrapy startproject myproject
这将创建一个名为“myproject”的目录,其中包含以下文件和目录结构:
myproject/
scrapy.cfg
myproject/
__init__.py
items.py
middlewares.py
pipelines.py
settings.py
spiders/
__init__.py
让我们看一下这些文件的含义:
现在我们已经创建了项目,我们可以开始编写我们的第一个爬虫。让我们在myproject/spiders/目录中创建一个新的文件,命名为quotes_spider.py。
我们的爬虫代码将如下所示:
import scrapy
class QuotesSpider(scrapy.Spider):
name = "quotes"
start_urls = [
'http://quotes.toscrape.com/page/1/',
'http://quotes.toscrape.com/page/2/',
]
def parse(self, response):
for quote in response.css('div.quote'):
yield {
'text': quote.css('span.text::text').get(),
'author': quote.css('span small::text').get(),
'tags': quote.css('div.tags a.tag::text').getall(),
}
在这个例子中,我们使用Scrapy框架定义了一个名为“QuotesSpider”的爬虫类。这个爬虫将爬取 http://quotes.toscrape.com 网站,并提取每个引用的文本、作者和标签。我们将处理两个网页。
现在,我们已经定义了我们的爬虫,让我们使用Scrapy runspider命令来启动它。请打开终端并运行以下命令:
cd myproject
scrapy crawl quotes
这将启动我们的名为quotes的爬虫,并开始抓取我们在start_urls中定义的URL。
您应该看到类似以下的输出:
2018-07-01 15:55:29 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://quotes.toscrape.com/page/1/> (referer: None)
2018-07-01 15:55:29 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://quotes.toscrape.com/page/2/> (referer: None)
2018-07-01 15:55:29 [scrapy.core.scraper] DEBUG: Scraped from <200 http://quotes.toscrape.com/page/1/>
{'text': '“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”', 'author': 'Albert Einstein', 'tags': ['change', 'deep-thoughts', 'thinking', 'world']}
2018-07-01 15:55:29 [scrapy.core.scraper] DEBUG: Scraped from <200 http://quotes.toscrape.com/page/2/>
{'text': '“It is our choices, Harry, that show what we truly are, far more than our abilities.”', 'author': 'J.K. Rowling', 'tags': ['abilities', 'choices']}
...
现在,您已经了解了如何使用Scrapy创建项目,并编写简单的爬虫。Scrapy提供了许多其他功能和工具,您可以通过阅读官方文档进一步了解。