当前位置: 首页 > news >正文

最好看的网站模板东莞关键词seo

最好看的网站模板,东莞关键词seo,wordpress速度优化版,某景区网站建设策划书Scrapy可以在非常短的时间里获取大量的数据。这些数据无论是直接保存为纯文本文件还是CSV文件,都是不可取的。爬取一个小时就可以让这些文件大到无法打开。这个时候,就需要使用数据库来保存数据了。 MongoDB由于其出色的性能,已经成为爬虫的首…

        Scrapy可以在非常短的时间里获取大量的数据。这些数据无论是直接保存为纯文本文件还是CSV文件,都是不可取的。爬取一个小时就可以让这些文件大到无法打开。这个时候,就需要使用数据库来保存数据了。

        MongoDB由于其出色的性能,已经成为爬虫的首选数据库。它的出现,使得Scrapy如虎添翼,从此可以放心大胆地爬数据了。

一、 items和pipelines的设置

        为了将Scrapy获取到的数据保存到MongoDB中,应先定义需要抓取的数据。假设需要抓取的信息为name(名字)、age(年龄)、salary(收入)、phone(手机号),那么items可以按照如图所示进行定义。

        一个Scrapy工程可以有多个爬虫;再看items.py文件,可以发现,在一个items.py里面可以对不同的爬虫定义不同的抓取内容Item。

        接下来设置pipelines.py。在这个文件中,需要写出将数据保存到MongoDB的代码。而这里的代码,就是最简单的初始化MongoDB的连接,保存数据,如图所示。

        其中,第9行内容用来得到在settings.py中设置好的数据库相关信息。

from scrapy.conf import settings

        settings.py中的信息都是按照以下格式写的,如图:

名字  = 值

        当在Scrapy工程中需要使用这些配置信息的时候,首选从scrapy.conf中导入settings,然后就可以像使用字典一样从settings中读取数据了:

settings[名字]

        数据库的信息也可以写到settings.py中,如图:

        这里的“MONGODB_HOST”可根据实际情况修改:如果MongoDB运行在爬虫所在的计算机上,那就写“127.0.0.1”;如果专门有一台计算机来运行数据库,那么就设置成对应计算机的IP地址。
        这样统一配置的好处在于,如果数据库进行了修改,那么直接修改settings.py就可以了,不需要在Scrapy的工程里面找哪些地方用了数据库的信息。统一配置是对一个工程的基本要求。
        items.py和pipelines.py设置好以后,Scrapy就可以使用MongoDB来保存数据了。

二、在Scrapy中使用MongoDB

        在设置好items.py和pipelines.py以后,Scrapy已经具备了使用MongoDB来保存数据的要素。此时条件虽然有了,但是还需要告诉Scrapy应该使用pipelines.py中设置的流程来保存数据。所以这个时候需要在settings.py中“告诉”Scrapy,让它知道爬取到的数据应该传到哪里。
        在settings.py中,下面几行数据是被默认注释掉的:

        现在需要解除注释,并设置成定义好的pipeline,其中,它默认的“SomePipeline”需要改成“BaiduPipeline”,如图:

        这里的ITEM_PIPELINES本质上就是一个字典,它的Key是“BaiduPipeline”的路径,而Value是一个数字300。为什么这里会有一个数字?
        实际上,如果仔细观察会发现,pipelines.py文件的文件名是“pipelines”,在英文中这是一个复数名词。而“BaiduPipeline”是一个单数名词。所以,pipelines.py和前面的items.py一样,可以在里面定义多个不同的pipeline来处理数据。这也是为什么图中有一个数字“300”,这个数字称为优先级,数字越大,优先级越低。习惯上,这个数字使用整百数。所以在ITEM_PIPELINES这个字典中也可以按照字典的格式写很多个不同的pipeline,数据会先经过数字小的pipeline,再经过数字大的pipeline。
        现在Scrapy已经知道需要把items中的数据发到pipeline中来使用了。接下来的问题是,如何把爬虫爬取到的数据存放在item中。

        例 :从下面的HTML代码中提取出每个人的姓名、年龄、月薪和电话,并将它们保存到MongoDB中。

        现在,需要做的就是将爬取到的数据放入item中。在Scrapy中,item初始化以后可以像字典一样被调用,如下面代码所示。

        在上面的代码中,往item中添加数据不过就是实例化PersonInfoItem这个类,然后像字典一样使用而已。而代码的最后一行,yield item则是将已经存放好数据的item提交给pipeline来执行。
        yield是Python的一个关键字,使用的时候,代码看起来和return很像,但是它返回的是一个“生成器”对象,而不是某些具体的值。生成器里面的代码在被迭代的时候才会执行且只执行一次。不过这些过程会由Scrapy帮忙实现,所以这里只需要使用yield提交item即可。

        请思考一个问题,为什么下面这一行代码要放在循环的里面而不是外面?

item = PersonInfoItem()

        因为每一次循环都对应了一个人的信息,所以有多少个人就应该有多少个PersonInfoItem的实例。如果实例化PersonInfoItem放在循环外面,那么只能得到一个PersonInfoItem,因此只能保存一个人的内容。在循环进行的过程中,后面的数据会覆盖前面的数据,循环结束以后,最终只能得到最后一个人的信息。

--------------------------------------

没有自由的秩序和没有秩序的自由,同样具有破坏性。

http://www.bjxfkj.com.cn/article/107201.html

相关文章:

  • 黄冈网站建设有哪些广州网站建设
  • 盐湖网站制作百度指数怎么分析
  • 未来软件网站建设外贸网站优化
  • 成都网站建设杨勇上海谷歌优化
  • .net做网站开发吗网推技巧
  • 东北亚科技园里有做网站的吗关键词优化话术
  • 河北邯郸房产网南京市网站seo整站优化
  • 武汉注册公司地址seo免费优化工具
  • 磁县网站制作公司上海网站快速排名提升
  • 网站备案流程多少钱百度 个人中心首页
  • 为什么企业网站不是开源系统广州百度推广客服电话多少
  • 安监局网站建设谷歌seo需要做什么的
  • 网站如何分页重庆网站建设技术外包
  • 高端网站设计收费百度做广告
  • 咖啡网站建设设计规划书推广软文是什么
  • 集团网站建设思路短链接
  • 弄美团网站的一般一个做赚多少钱互联网seo是什么意思
  • 合肥网站开发建设南京百度搜索优化
  • web网页设计说明北京seo优化哪家好
  • 0基础做网站多久企业营销策略分析论文
  • 全影网的网站哪儿做d如何做谷歌优化
  • 黑龙江省网站建设企点官网
  • wordpress站群版线上营销策划方案
  • 织梦如何做中英文网站天津百度快速排名优化
  • python可以做网站么北京最新发布信息
  • 中国六冶的网站谁做的互联网金融
  • 校园网站建设计划怎么快速推广自己的产品
  • 专做校园购物网站关键词排名优化教程
  • 前端可以做网站吗全网营销平台有哪些
  • 做网站最常用的软件是什么整站优化全网营销