挖一个坑, 之前去日本的时候想去圣地巡礼, 又不知道如何规划路线和时间. 可以做个网页辅助一下. 初步打算:
- 用Scrapy爬舞台探訪アーカイブとは的数据
- get一下Google Map的API, 把地名转化成地理坐标
- Plot到地图上做成静态网页即可食用
下半年去日本时就可以有计划地摸鱼, 调查风土人情, 出片.
仓库链接: https://github.com/9r0x/Seichi
2019.03.17 更新
功能
- 完成了spider的基础功能, 可以抓取主网页上每一部作品的链接并分析各页面下的内容
- 正则匹配获取由
「
与」
强调的地名组 - 每一个地名组由1+地名构成, 由全角逗号隔开, split之后flatten成一个地名表
- 依次get Google Place API. 没想到这玩意第一天显示无限量使用, 我请求了2400次. 第二天就给我上限2400次了
- 完成了React.js为架构, Ant Design为UI风格的前端
- 完成了包含简单信息的可扩展的pop-ups
技术难点
- 计划和修改了好几次Spider的输出数据结构
- Json vs. Json Line 采取了Json 因为js对json带有支持, 与此同时以后也许得解决大文件导入的问题.
- 以作品划分 vs. 以地点划分 最后选用了以地点划分, 考虑到这个app的purpose是陈列不同的地点, 作品名可以用filter选择
- Google-map-react这个项目虽然开箱即用, 却不支持element, 正确地写成Component之后一大堆warning就消失了.
- 抽象设计原则, 每次把整个object传入component才是正解. 在满足开闭原则的同时方便了扩展. 顺便因为ECMA6正式支持的Spreading, 传入一整个object就像python里的
**kwargs
一样好用.
TODOs
- 地点产生的混淆, 因为对Google Place API无条件地信任, 有些定位看上去不可思议但却是准确的(比如Knole House就是在英国的), 而看上去没问题的却不ok(比如三田被定位在台湾, 但其实是东京的一所学校)
- 支持Filter
- 支持动态更新数据, 每次扒1700+部作品这谁顶得住啊
- 支持路线规划
- 记住用户的上次画面的中心(localstorage)
- 支持当前位置
- 减少API请求次数
- 支持
[]
和『』
强调的地名 - 模糊地名会定位到JR站(对游客来说还算friendly)