| title | tags | grammar_cjkRuby |
|---|---|---|
Path Crawler(路径爬虫程序)使用手册 |
crawler,爬虫,百度地图API |
true |
- 程序运行的操作系统:Windows 10(其他操作系统未进行测试,但只要能安装node.js的操作系统应该都可以运行)。
- 安装node.js:访问 https://nodejs.org/en/,下载node.js最新版本,进行安装。node.js官网默认下载
.msi格式安装包,在Windows上可以直接安装,在安装过程中注意将node添加到环境变量的选项是否选择(默认添加)。 - 建议安装git bash: 访问 https://git-for-windows.github.io/,下载安装git for windows,安装后系统内会具有git bash工具,实测爬取效率高于power shell。使用方法详见后续具体程序操作步骤。
- 将
.dbf文件导出成.txt文件,以\t(Tab)为间隔,保留表头(可以在Excel中实现)。 - 确保每一行数据对应每一个社区或者医院的信息。
- 进行处理的文本数据必须是utf-8格式的,如果转换后的文本不是utf-8格式,可以用Windows的文本编辑器打开,点击“另存为”,选择编码为UTF-8,保存即可。
这一步骤的主要操作通过combination.js完成。
- 程序第6-10行为读取社区源文件程序。可以修改
CommPt_utf8.txt为需要读取的社区数据文件。const readStreamOfComm = readLineStream(fs.createReadStream('./data_sources/CommPt_utf8.txt'), { newline: '\n', autoNext: false });
- 程序第12-16行为读取医院源文件程序。可以修改
hospital_utf8.txt为需要读取的医院数据文件。const readStreamOfHos = readLineStream(fs.createReadStream('./data_sources/hospital_utf8.txt'), { newline: '\n', autoNext: false });
- 社区数据和医院数据在读取时设置为逐行读取,每一行的数据读取后存储在
elements数组中,elements数组下标n为这一行数据第n个属性值。程序第25-29行可以设置社区数据的属性下标。第37-39行可以设置医院的属性下标。对应关系如下表。程序属性 文本数据属性名 address/hosName 社区地址/医院名 lat 纬度 lng 经度 - 在
combination.js所在目录下右键,选择git bash here,打开后运行以下命令:node combination.js
- 程序将按照数据在源文件中的行号进行编号,由于数据源文件中首行为表头,因此第二行编号为1。编号后进行组合并切片,按照顺序每10000对组合切片成一个文件,存储在combination文件夹中。切片文件名为
combination+number.txt,例如combination1.txt。全部组合与切片完成后,程序会在控制台打印写入完成。
这一步骤通过Read.js完成。
- 确认当前请求的交通模式。与交通模式相关的参数位于程序的第62行和第89行。可修改的交通模式包括driving(驾车)、walking(步行)、transit(公交)、riding(骑行)。每次爬取完一种交通模式下所有点相互间的通行路径后,再进行修改。
// 第62行 qs: { mode: 'walking', // 本行修改的是请求时的交通模式,>>**重要**<< ... } // 第89行 let tranSchema = 'walking'; // 本行修改的是保存在数据中的交通模式
- 修改组合文件和路径结果文件。在程序第53行。
pathAnalysis('./combination_files/combination35.txt', './path_results/path35.txt');
- 修改ak。在程序第68行。
ak: 'dOaspTMmxaxRBGDHFApy8pdvnvCGzuX3' - 在
Read.js所在目录下右键,选择git bash here,打开后运行以下命令:程序立即开始运行。正常情况下,成功获取路径信息会打印在git bash界面上。当git bash界面上开始出现以下错误信息时,程序可能会卡住,此时并发量一般小于50。可以不必等待。直接Ctrl + C结束该任务运行。node Read.js
# 错误信息示例 [SyntaxError: Unexpected token ILLEGAL] [SyntaxError: Unexpected token )] - 将
.\pathResult文件夹中的结果文件备份。 - 将
Read.js文件所在目录下的error.txt文件备份,并修改名字为error + num.txt,与结果文件对应。 - 重复以上步骤,直至所有切片文件爬取完成。
- 将error文件夹中所有的
error + num.txt文件合并,再次重复上述步骤,即可完成爬取。