刘军连怎么挂号 http://nb.ifeng.com/c/89ILxhbI6w5介绍:这是我的Scrapy教程系列的第9篇文章,在本Scrapy教程中,我将讨论如何定义Scrapy项目,如何使用Scrapy项目,以及如何创建自定义项目管道以将Item的数据保存到DB中。如果您在阅读时有任何疑问,我希望您在阅读本文后有一个很好的理解,请在此留言,我会尽快回复。您可以在本教程结束时获取此项目的源代码。ScrapyItemVSPythonDict在大多数抓取工作中,我们的目标是从网页中提取结构化数据,PythonDict确实可以用来返回抓取的数据,但是,很容易在字段名称中输入拼写错误或设置不一致的数据,这会造成一些灾难有很多蜘蛛的大型项目。如果您希望一个字段只接收字符串类型,那么没有好的解决方案。为了解决这个问题,Scrapy提供了ScrapyItem课程。Item实例是用于收集数据的简单容器,您可以将其视为Pythondict的包装,但它具有比原生PythonDict更有用的功能。如果您不熟悉Scrapy,可以在项目中使用PythonDict,但是,如果您的项目很大或者您在Scrapy方面有一些经验,请使用ScrapyItem来使您的项目保持一致。如何定义Scrapy项目及其使用方法每个Scrapy项目都调用了项目定义文件items.py,因此在此项目中,您需要编辑scrapy_spider/items.py现在让我们尝试在ScrapyShell中使用此项,scrapyshell输入进入。从上面的代码中,您可以看到Scrapy项目和Pythondict的使用之间没有太大区别,但Scrapy项目可以帮助您删除拼写错误并使您的项目保持一致,这就是为什么我建议使用ScrapyItem而不是比Pythondict收集数据。物品管道在一个项目被spider抓取后,它将被发送到ItemPipeline以有几个组件处理。每个管道组件都是一个Python类,它实现了一个简单的方法。组件可以对项执行操作,修改,删除或将其发送到下一个组件。项目管道可用于验证已删除数据,检查重复数据或将数据插入到Mysql,PostgreSQL或MongoDB等数据库中。在本节中,我想向您展示如何使用项目管道将已删除的引用数据保存到数据库中,方法是使用SQLAlchemy-TheDatabaseToolkitforPython。设置SQLAlchemy首先,我们需要确保已经安装了MysqlServer如果您使用的是Mac,则可以使用它homebrew来帮助您快速安装mysql。如果您使用的是Ubuntu或其他Linux发行版,则可以使用包管理器等apt。如果您使用的是Windows,请使用二进制安装程序进行安装。将localhost在该命令是MySQL服务器的IP地址,记得要改变它,如果你的MySQL服务器是另一台机器上。quote_toscrape是数据库名称。安装Mysql之后,现在需要使用命令安装SQLAlchemypipinstallSQLAlchemy。Settings.py现在我们在项目settings.py中添加MysqlServer连接字符串,将下面的代码添加到scrapy_spider/settings.py因为我们使用SQLAlchemy连接Mysql,所以这里的drivername是mysql,如果你连接Postgres,那么drivername就是postgres。你应该改变的user,passwd这里的价值。Models.py现在创建scrapy_spider/models.py,此文件将包含由其创建的数据库模型SQLAlchemy。首先,我们定义一个帮助我们连接数据库的函数。为此,我们需要导入SQLAlchemy以及我们的scrapy设置实例:我想用这个例子指出一些要点。首先,许多在线资源都喜欢用于fromsqlalchemyimport*将所有内容导入到我们的models.py中,但是,这不是一个好习惯,因为它可以使阅读代码的人感到困惑并对性能产生一些不良影响。因此,为了成为更好的开发人员,我们需要更明确地了解我们的导入内容。我们使用get_project_settingsScrapy附带来获取设置对象,这可以让我们访问CONNECTION_STRING。要使用Sqlalchemy创建表,我们必须declarative_base从SQLAlchemy导入以将定义表结构的类映射到Mysql。我们QuoteDB继承DeclarativeBase并设置类中的字段。对于每个字段,我们定义它的字段类型,我们的主键字段为Integer,其余为字符串,文本。在设置了sqlalchemy之后,我们可以通过输入来测试它是否按预期工作scrapyshell。请记住使用%paste命令粘贴下面的代码块以在Scrapyshell中进行测试。您可以查看这篇文章,了解有关ScrapyshellScrapy教程#6:ScrapyShell
概述和技巧的更多提示。如果您不清楚此代码阻止了什么,请不要担心,我将在下一节中详细解释。你应该知道的是,如果没有引发错误,那么你会在终端中看到测试引号文本,这意味着SqlAlchemy可以在你的环境中按预期工作。现在我们可以将此代码块移动到我们的管道中,使其由spider抓取进程项并将数据保存到Mysql数据库中。将Scraped数据流水线化到数据库pipelines.pyscrapy项目中有一个文件,它定义了我们在Scrapy项目中使用的管道。我们可以修改ScrapySpiderPipeline文件,使其按照我们的预期将数据保存到数据库。这里,我们有一个构造函数,def__init__(self)通过定义引擎,DB中的数据表来初始化类。create_table如果DB中没有数据表。函数会尝试为我们创建数据表。每个管道组件类都必须有一个方法process_item,该方法将被顺序调用以处理已删除的项目。所以在process_item中,我们与数据库建立会话并将数据设置为我们的QuoteDB模型。然后将其添加到我们的会话中,您应该注意的是,在您调用该
转载请注明:http://www.aierlanlan.com/cyrz/8569.html