You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
constexpress=require('express')constapp=express()constrouter=require('./router')app.use(router)app.listen(3000,()=>console.log('port in 3000'))// routerconstrouter=express.Router()router.get('/',(req,res)=>{res.send(`hello world`)})module.exports=router
node index.js
# 或者利用nodemon监听
nodemon index # 写入配置文件
"scripts": {"dev": "nodemon index.js"},
yarn dev
#or
npm run dev
在屏幕看见 hello world 就算是成功了
修改crawler.js
// 在之前下载图片逻辑后面写入插入数据库逻辑// ...constmysql=require('./mysql')// ...// 下载图片constdownload=(item,id)=>{try{letuserAgent=userAgents[parseInt(Math.random()*userAgents.length)]// 通过 superagent 保存图片constreq=superagent.get(item.url).set({'User-Agent': userAgent})// 增加 url titleleturl=`/image/page${id}/${item.title}.png`lettitle=item.title// 使用了stream(流)req.pipe(fs.createWriteStream(`./static/image/page${id}/${item.title}.png`))// 写入数据库mysql.sqlAdd(url,title)return`下载${item.title}done`}catch(error){returnconsole.log(`下载图片失败${item.title}`,error)}}// mysql 文件// 插入数据 id自增sqlAdd(url,title){letsqlAdd='INSERT INTO image SET ?';letsqlAddJson={
url,
title
}connection.query(sqlAdd,sqlAddJson,(err,res)=>{if(err)returnconsole.log('INSERT INFO ERROR:',err.message);console.log('INSERT INFO',res.insertId);});}// 没有做一些错误等预防(2333)
插入成功后, 打开数据库查一下
记得启动数据库!!!
mysql.server start
建表的过程就省略了...
查数据
数据有了之后, 开始查询数据
constexpress=require('express')constrouter=express.Router()constcontroller=require('./controller')router.get('/',(req,res)=>{res.send(`hello world 11qq`)})router.get('/allimg',async(req,res)=>{// 调用controller.jsletallImg=awaitcontroller.getAllImg()res.send(allImg)})module.exports=router
2019-11-03 23:11:39
node爬虫 简易版【站酷】
node mysql 增删改查【简易版】
结合上面的文章做了一个图片展示
start
启动node服务, 使用express
yarn dev #or npm run dev
在屏幕看见 hello world 就算是成功了
修改crawler.js
插入成功后, 打开数据库查一下
记得启动数据库!!!
建表的过程就省略了...
查数据
数据有了之后, 开始查询数据
调用controller.getAllImg()并返回
调用mysql.getAllImg()并返回
访问http://localhost:3000/allimg路由之后可能是这样
展示
数据有了之后就可以展示了
这里用了parcel打包工具
内容很简单
然后查看, 发现有问题,接口请求 Network Error (这里是跨域问题)
我们使用cors来解决
解决跨域之后就出现数据了, 然后把样式美化一下, 到这里上面的图片还没有加上!!!
为了假如图片, 我设置了node静态资源(也不知道做法对不对 反正是跑起来了)
在 Express 中提供静态文件
然后访问接口数据的路径加上http://localhost:3000/就可以了
效果展示
还有很多优化点可以做, 分页什么什么吧啦吧啦, 代码优化 错误处理 emmmmm
The text was updated successfully, but these errors were encountered: