nodejs爬虫实验项目
这学期新开了web编程课,第一个项目的要求具体如下:
◦核心需求:
◦1、选取3-5个代表性的新闻网站(比如新浪新闻、网易新闻等,或者某个垂直领域权威性的网站比如经济领域的雪球财经、东方财富等,或者体育领域的腾讯体育、虎扑体育等等)建立爬虫,针对不同网站的新闻页面进行分析,爬取出编码、标题、作者、时间、关键词、摘要、内容、来源等结构化信息,存储在数据库中。
◦2、建立网站提供对爬取内容的分项全文搜索,给出所查关键词的时间热度分析。
◦技术要求:
◦1、必须采用Node.JS实现网络爬虫
◦2、必须采用Node.JS实现查询网站后端,HTML+JS实现前端(尽量不要使用任何前后端框架)
学习过程:
对于我这种刚接触一学期C语言的人来说,难度真不是一般的大,突然要学html, css,jst这么语言,又要在每次网课看着听不懂的视频发呆,真是一种煎熬。但老师提到这门课更注重了解实际应用,没办法只好先从老师发的项目示例研究起了。
先附上老师的代码
再学习了一段时间之后,开始尝试对老师的代码进行修改,来爬取别的新闻网站,先以网易新闻为例,和中国新闻网一样比较简洁,先写url的正则表达式
https://news.163.com/20/0429/17/FBD86L1F0001899O.html
https://news.163.com/20/0429/19/FBDFR2P50001899O.html
https://news.163.com/20/0429/15/FBD21U5R00019B3E.html
找到他们的共同之处,都是2个数字/4个数字/2个数字/长度为16的数字字母的组合
写出正则表达式://\d{2}/\d{4}/\d{2}/\w{16}[.]html/;
再去看页面的源代码,找到要爬取的内容,标题
最后写成代码运行
爬取成功。
在修改代码的时候,个人感觉最困难的还是写正则表达式,由于完全没接触过,视频里也没有提到,只好请教百度,附上学习正则表达式的网站:https://www.runoob.com/regexp/regexp-syntax.html
再来就是将爬取的内容存入mysql中,安装好之后在bin文件夹下cmd运行,创建新的数据库
再将老师给的代码写入进去,
再调用mysql
在mysql输入select url,title from fetchse运行之后就能看到爬取的新闻了
再用人民网作为例子尝试一下
也同样爬取成功
最后再尝试用express构建网站访问mysql中的数据并实现搜索功能,首先在nodejs的文件夹下运行cmd,输入express -e search_site,创建一个search_site的文件夹,打开后就之前写的mysql。js文件拷贝进去
然后在文件夹下cmd运行,输入npm install mysql -save和npm install来安装包和依赖项,这里我安装失败了好几次之后才安装成功,百度了一下说是网络问题(移动网络是这样的)。安装完毕以后用vscode打开search_site文件夹,找到index文件进行修改
然后在public文件夹下创建前端
在search_site文件夹下cmd运行,node bin/www,运行前端网站http://127.0.0.1:3000/search.html,随便输入一些关键词,就能搜索到相应的新闻了
至此,爬虫项目终于算是完成了,刚开始接触的时候确实什么也看不懂,基本靠着老师的代码在进行爬虫项目,自己写的时候一直卡在发现问题->解决问题->发现新问题的死循环中(爬取某些网站失败的问题还没解决),但慢慢写过来感觉也确实有所收获,爬成功一个网站也很有成就感。这次的爬虫项目学习也体会很深,希望能成为以后学习的宝贵的经验。