相关链接汇总:
Node.js网站爬虫(一)项目简介与完成情况
Node.js网站爬虫(二)mysql配置与数据库设计
Node.js网站爬虫(三)网络爬虫
Node.js网站爬虫(四)Express框架构建网站执行搜索功能
Node.js网站爬虫(五)扩展:热点词时间热度动态可视化展示
Node.js网站爬虫(六)易错点合集和感想
易错点合集
网络爬虫部分:crawler.2.1_xxx.js
- Cannot read property ‘0’ of null
当exec()执行结果为空时,不存在下标[0]的值,因此需要分类讨论:
- Can not read property ‘replace’ of undefined
undefined类型无replace属性,确保eval(desc_format)不为null时再进行replace 操作。
- Can not read property ‘split’ of undefined
undefined类型无split属性
- 增添取不到URL的情况
- 增添取不到时间的情况
-
执行sql语句时增添return
遇到error后返回,继续解析后面的网页。
- The “buf” argument must be an instance of Buffer, TypedArray, or DataView. Received undefined
更改前:
报错原因:不知道body的类型,未给body开辟空间。(使用Buffer.from(body)解决)
更改后:
网站构建部分:search.html和index.js
-
search.html中:
var mytype = $("#test option:selected").val() :取得用户选择的下拉菜单的值(类型:title或content),一定注意要在click后再获取查询类型,实验过程中因为之前把这行命令写在了ready()之后click()前,导致一直只能取到下拉菜单的默认值。(意思是“加载页面的时候就拿到下拉框默认的值了,之后点击按钮之后也还是这个默认值,没有再次去获取,因此改成在两个点击事件函数里获取下拉框的值就可以了“ )。
-
index.js中:
获取url中用户传入值的方式:request.query.xx
举例 request.query: { searchinfo: ‘疫苗’, type: ‘title’ }
则可以 request.query.type 和 request.query.searchinfo分别取到’疫苗’、‘title’。
总结和感想
通过此次实验项目,将课堂上学到的理论知识用于实践之中,更加深入详细地学习理解了网络爬虫的过程和Express框架构建网站的过程,也对网站页面的设计有了更多的了解,是一次收获颇丰的作业经历。