从零开始用nodejs爬虫

从零开始用nodejs爬虫

web编程课的第一个项目,写这个爬虫的过程中真的遇到了很多困难,走了很多弯路,最早遇到的困难是从来没有接触过Javascript,看老师上课的示例代码什么的都非常吃力,于是去找了很多教程学习,但是看了跟没看一样,代码拿到手上还是什么都看不懂。后来受到启发,学习一样东西的最好办法就是去使用它,光看是看不会的,只有自己上手实践才能慢慢掌握。希望我能够在这次爬虫的学习中有所收获,希望我能顺利完成这个项目。

项目要求

在这里插入图片描述

项目示例1

使用老师提供的实例1时我就遇到了很多莫名其妙的问题,先是下载node.js但是npm死活安装不了,到处找解决方法未果后,在同学的推荐下下载了VSCode。但是新的问题又来了,正当我怀着满腔热情想要以“hello world”作为我的js编程的开始时,不断跳出的“无调试适配器”给我浇上了一盆冷水。找了半天也没整明白到底问题出在哪,最后还是万能的重装解决了我的问题。

接下来是实例代码及效果的展示
在这里插入图片描述
在这里插入图片描述
出于好奇把实例代码中的网址换成腾讯体育NBA专栏的网址,看看会发生什么
在这里插入图片描述
在这里插入图片描述

果然,爬了个寂寞。

项目示例2

示例2的爬虫目标:
在这里插入图片描述
开始示例2的代码前,我先观看了老师的教学视频让自己心中有个大概的框架,看完视频后我又兴致勃勃地准备开始运行示例2的代码,结果编译器又是一顿报错。检查加求助了半个小时之后,原来是因为我把老师说的“npm install ***”,理解成了真的就是执行“npm install ***”这句话。
在这里插入图片描述
这个小插曲过后,我顺利地运行了示例2,但是调试运行台显示其中有一个种子中的新闻链接识别出错
在这里插入图片描述
来与正常的做个对比
在这里插入图片描述
观察爬取失败的新闻,发布日期是2018-01-17,而其他的2020-04-22以后的,或许与爬取失败的原因与发布日期有关?

项目示例3

这次的项目涉及到MySql数据库,和前两次一样,先跑跑看老师的代码
在这里插入图片描述
在这里插入图片描述
结果不管怎么查询数据库都是空的,仔细检查,发现调试控制台里显示我跑的代码似乎一直都是前一个示例
手动将launch.json中的program更改一下再运行试试
在这里插入图片描述
依然报错
问了好多同学都没解决这个问题,再问了老师之后,我仔细检查发现,我保存的mysql.js文件,多了一个空格
修改之后终于运行成功了
在这里插入图片描述

项目示例4

示例4的目标如下
在这里插入图片描述

先上代码
在这里插入图片描述
7.01的代码与在cmd界面中使用“select title,author,publish_data from fetches where title like’%新冠%’”的效果相同,都能达到使用mysql进行查询已爬取数据的目的。
接下来是创建前段和后端,同样运行一下示例代码,在前端网页输入查询关键词后,查询结果在后端显示出来了
在这里插入图片描述

在这里插入图片描述
再下一步需要用表格显示查询结果,但是在用express脚手架搭建网站时遇到了麻烦,安装了数个包后运行指令还是报错
在这里插入图片描述
上网查询似乎是express4.0以后版本的安装问题,自己一通瞎捣鼓环境变量之后没有任何效果,求助助教学姐后总算是成功搭建起了这个脚手架。在这里插入图片描述
此时我们可以看到,在目标文件夹中出现了一个名为search_site的文件夹,接下来我们在这个文件夹里安装一系列所需要的包
正当我以为自己离成功实现代码只有一步之遥时
在这里插入图片描述
上网查询发现应该是环境变量的问题,修改未果后再次使用重装大法,但是我没想到的是,这次重装就是我噩梦的开始
在这里插入图片描述
重装完之后helloworld都跑不了了,加上远程教学没法让问题非常清晰地展示出来,问了助教学姐也没能解决。
我怀疑可能是自己在装express包的时候修改了环境变量,但是当初改之前忘了存个截图啥的方便改回去,瞎倒腾了一下午,电脑都差点给我干废了。
先写到这里吧,看看明天能不能有办法解决。


新的一天,我再次打开vscode,开始排查出现这种情况的原因,最后把范围缩小在了launch.json文件上,对program修改以后,再次尝试运行,代码终于又能跑起来了。
接下来继续昨天的步骤,此处省略重新建立mysql数据库的故事
准备完全之后再次输入指令node bin/www,这次没有再跳出让人崩溃的那句话,但是cmd窗口没有反应了,询问老师得知原来是正常情况,只要打开网页输入查询按钮就行了。
接下来跳过我输错网页浪费的几个小时无意义纠错时间,直接上图
在这里插入图片描述
到此,老师提供的项目示例总算是全部跑通了,接下来就到了我自己选择页面进行爬取的时候了。

首先我们需要理解老师的爬虫代码的原理,理解原理后依葫芦画瓢就能够爬取我们自己想要的页面了。这个过程中最大的困难就是正则表达式的学习了,使用工具可以帮助我们学习正则表达式,以下附上我在学习时使用的两个网页
https://regex101.com/
https://regex101.com/
https://c.runoob.com/front-end/854
https://c.runoob.com/front-end/854

接下来要做的就是解析我们要爬取的页面的URL,我本来想选择腾讯体育的NBA专栏作为我的目标,但是正则表达式实在是有些陌生,所以我选择了更容易解析的虎扑体育作为我的目标,运行之后
在这里插入图片描述
转码成功但是又出现了一个我没有见过的问题,询问老师之后得知应该是date为空报错了。

目前的项目进度大概就到这里,想要达成要求我还需要继续学习正则表达式和解析源代码,作为作业来说并不合格,希望自己在这两天内能够尽快掌握这些。感谢我在赶ddl时我的同学们给我的帮助,感谢王老师和助教学姐不厌其烦地解答我的问题(有些真的很蠢)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值