2018.8.21重磅更新!!!: FunpySpiderSea

作者: 天涯明月笙 | 来源:发表于2018-08-21 21:36 被阅读28次

2018.08.21 最新可用Scrapy1.5.1爬取数据 + ElasticSearch6.3.2 存储数据并提供对外Restful Api + Django打造搜索引擎网站(可配置为存入Mysql)

线上演示地址(近期重构更新中): http://search.mtianyan.cn

本仓库为爬虫端数据入库ELasticSearch代码

实现整个搜索需要结合mtianyanSearch项目(网站端) https://github.com/mtianyan/mtianyanSearch

可用功能:

  1. 伯乐在线,拉勾职位,知乎爬虫存入Mysql 存入ELasticSearch
  2. 全文搜索(需结合网站端一起使用),搜索建议,我的搜索记录,搜索词高亮标红,底部分页
  3. Redis实现的实时爬取数据展示(更新迭代中,演示站为历史数据,因此不会实时增长),热门搜索Top-n

重磅更新一: 依赖全面更新,代码几乎完全重构

  1. 将ElasticSearch的支持版本从rtf(5.1)版本解放,全面支持ElasticSearch最新版(6.3.2) + Elasticsearch-analysis-ik(中文分词)最新版,使用破坏性更新后的elasticsearch-dsl-py最新版本,不再需要为历史版本问题烦恼。
  2. 项目代码完全重构,引入abc实现抽象类,抽象方法,规范并统一,Item接口设计

items.py不再承担所有item编码,只规定对应想要完成目的实现的接口(设计了MySqlItem以及ElasticSearchItem),具体的实体类型对象,均被整理至sites目录,以域名为归档标准

  1. 将大多数的工具类,能抽取则抽取,并提供了很多辅助生成代码的help方法。(可查看utils下)
  2. 使用了ELasticSearch6的全新接口,如Document(DocType的继任者,7.0时代的新主人), Index全新设计规范(从一库多表的类比官方限制为一库一表),自定义analyzer实现对于Completion的自定义分析器设置
  3. 统一命名规范: 域名+爬取内容+Item/Index,统一使用url_object_id 在Mysql中作为主键,ELasticSearch中作为meta.id,同时都进行了遇到重复,更新数据而不是新增,解决数据冗余。
  4. 删除所有无用代码,保持项目简洁代码美观,所有代码进行了PEP8规范的格式整理

重磅更新二: 全面可用

在重构所有代码的同时对于伯乐在线博客文章,拉勾网职位,知乎的问题回答爬取进行了维护更新,并进行了存入Mysql与存入ELasticSearch6的通过性测试。

如何开始使用?

安装ELasticSearch6.3.2,配置Elasticsearch-analysis-ik插件,安装Redis(可选配置ELasticSearch-head)

git clone https://github.com/mtianyan/ArticleSpider
# 新建数据库mtiansearch  Navicat导入mysql文件;修改settings.py中数据库配置信息。
cd ArticleSpider
pip install -r req_funpySpider.txt
scrapy crawl zhihu
scrapy crawl lagou
scrapy crawl jobbole

数据入库ELasticSearch配置。

执行site下的es_*文件,生成Mapping,setting中配置使用ELasticSearchPipeline

scrapy crawl zhihu
scrapy crawl lagou
scrapy crawl jobbole

致谢

原版视频课程地址:

感谢Bobby老师的这门课程,通过这门课程学到了很多很多,自己在踩坑填坑,重磅更新解决的时候,收获的不只有知识,我觉得更多是解决问题的能力。

简书相关文集地址(已过期,只有一定参考意义,最好的读物是源码!):

https://www.jianshu.com/nb/11202633

关于我

一个每天睡觉吃饭学政治数学英语学技术的今年刚毕业在家,不专心二战考研瞎折腾的家里蹲程序员(欢迎大家给我介绍很赚钱之道)

简书 && mtianyan's blog(暂时遗弃,懒)

有趣的Python群:619417153

欢迎关注简书,star项目!谢谢!你的关注支持是我继续分享前进的动力

求打赏鼓励

很高兴我写的文章(或我的项目代码)对你有帮助,请我吃包辣条吧!

微信打赏:

markmark

支付宝打赏:

markmark

相关文章

  • 2018.8.21重磅更新!!!: FunpySpiderSea

    2018.08.21 最新可用Scrapy1.5.1爬取数据 + ElasticSearch6.3.2 存储数据并...

  • Jetpack 重磅更新!

    原文作者:Florina Muntenescu原文地址:https://medium.com/androiddev...

  • 妈妈的生日

    今天(2018.8.21农历7月11)

  • 2018.8.21

    没发生什么就是最好的一天了。 没做什么很重要的事,就和平时差不多了,据说明天要去水边玩,不太想去,感觉还是家里有意...

  • 2018.8.21

    早晨一睁眼,我这心里就有一些话特别想说,总感觉开学第一天需要强调一下交代一下,要不就心里不踏实。可是,儿子一起床好...

  • 2018.8.21

    昨天起床吃了早餐遛了一圈回去坐着,而后变成躺着,最后睡着了。舍友给带了午饭,中午吃了一个脆脆的桃子,下午吃了剩下的...

  • 2018.8.21

    表哥结婚。 表哥站在上面,紧张的跳一下,抖抖肩,怎么都看着像一个没长大的大男孩,怎么也不像要结婚的样子。但是从新娘...

  • 2018.8.21

    昨天的笔记,今天开始整理。思绪转瞬即逝,即便著于笔端,时间过了,感觉也变了。 开始审慎的思考“我为什么学”“我要到...

  • 2018.8.21

    如果我们作为前期觉醒者都不能让自己得以改变,都不能让我们自身获得最大的受益,可想而知我们再去推荐给他人是否具有说服...

  • 2018.8.21

    国家队继续出手,今天继续出手吃药喝酒。总体来讲是轮动效应。一个意思,就是国家队终于拿出行动护盘了。 秋季行情在恐惧...

网友评论

  • e6bf1e07fc3e:请问您整个项目用的是python几点几版本?,用pip install -r 各种报错:disappointed_relieved:
  • 背负代码的宇智波:为什么爬的数据保存不到ElasticSearch里面呢
    天涯明月笙:@背负代码的宇智波 具体是哪个爬虫,你去调试看下item里面应该是没有爬到内容,我这边运行依然是好的,建议自行debug
    背负代码的宇智波:File "F:\ArticleSpider-master\FunpySpiderSearch\pipelines.py", line 74, in process_item
    item.save_to_es()
  • e4e52c116681:问一下,你的专题里的上一篇 目录 下一篇是简书自动带的吗?
    e4e52c116681:@天涯明月笙 谢谢,已经知道了:stuck_out_tongue_closed_eyes: 现在我也有连载文集了
    天涯明月笙:@张风捷特烈 是的,连载文集
  • 479c3967bd57:@天涯明月笙 爬取知乎时会遇到,missing grant_type,请问应该怎样解决?
    479c3967bd57:@天涯明月笙 回复好及时,多谢!
    天涯明月笙:换chrome浏览器为旧版本60及对应驱动,或者使用phantomjs
  • QQQcarry:是爬虫吗,有没有做建模竞赛的
    天涯明月笙:已经毕业了,暂时没有这方面计划

本文标题:2018.8.21重磅更新!!!: FunpySpiderSea

本文链接:https://www.haomeiwen.com/subject/pqjsiftx.html