共计 1471 个字符,预计需要花费 4 分钟才能阅读完成。
Scrapy 是 Python 中最风行的网页爬虫框架之一,弱小且功能丰富。通过 Scrapy,你能够疾速创立一个爬虫,高效地抓取和解决网络数据。在这篇文章中,咱们将介绍如何应用 Scrapy 构建一个根底的爬虫。
一、Scrapy 简介及装置
Scrapy 是一个用 Python 实现的开源网页爬虫框架,次要用于网页数据抓取和剖析。它提供了所有的根底性能,包含解析 HTML(或其余格局的数据)、解决 HTTP 申请、解决 cookies 和 session、多线程抓取等等,还提供了多种类型的爬虫模型,实用于不同的需要。
装置 Scrapy 非常简单,只须要应用 pip 装置即可:
pip install Scrapy
二、创立一个 Scrapy 我的项目
Scrapy 应用一个独自的我的项目空间来组织每一个爬虫。你能够应用 Scrapy 的命令行工具来创立一个新的我的项目:
scrapy startproject tutorial
这会创立一个名为 ”tutorial” 的 Scrapy 我的项目,我的项目构造如下:
tutorial/
scrapy.cfg # 我的项目的配置文件
tutorial/ # 我的项目的 Python 模块
__init__.py
items.py # 我的项目的数据模型文件
middlewares.py # 我的项目的中间件文件
pipelines.py # 我的项目的数据处理管道文件
settings.py # 我的项目的设置文件
spiders/ # 寄存爬虫代码的目录
__init__.py
三、编写一个简略的爬虫
在 Scrapy 中,爬虫是一类定义了如何爬取某个网站(或一组网站)的类,包含如何进行网页爬取(即初始 URL)、如何跟踪链接、如何从网页的内容中提取数据等等。
上面咱们将创立一个简略的 Scrapy 爬虫,用于爬取 quotes.toscrape.com 网站的援用内容。首先,咱们须要在 spiders 目录下创立一个新的 Python 文件 quotes_spider.py:
import scrapy
class QuotesSpider(scrapy.Spider):
name = "quotes"
def start_requests(self):
urls = ['http://quotes.toscrape.com/page/1/',]
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
page = response.url.split("/")[-2]
filename = f'quotes-{page}.html'
with open(filename, 'wb') as f:
f.write(response.body)
self.log(f'Saved file {filename}')
在这个代码中,咱们定义了一个名为 QuotesSpider 的 Scrapy 爬虫。爬虫首先会申请 URLs 列表中的每个 URL,而后对每个响应进行解决,将响应的内容保留到一个 HTML 文件中。
四、运行 Scrapy 爬虫
创立好爬虫后,你能够应用 Scrapy 的命令行工具来运行爬虫:
scrapy crawl quotes
当你运行这个命令,Scrapy 将会找到名为 ”quotes” 的爬虫,并开始爬取,而后将爬取的内容保留到文件中。
通过这篇文章,你应该对 Scrapy 有了根本的理解,并可能创立和运行一个简略的 Scrapy 爬虫。在下一篇文章中,咱们将更深刻地探讨 Scrapy 的性能,包含如何提取数据,如何应用 Scrapy 的数据管道,如何解决登录和 cookies 等等。