js 爬虫抓取网页数据(联想虚拟货币爬取这是酷安老哥找我做的一个项目)

优采云 发布时间: 2022-04-16 05:20

  js 爬虫抓取网页数据(联想虚拟货币爬取这是酷安老哥找我做的一个项目)

  在此期间总共制作了三种爬行动物:

  我使用了两种不同的技术。前两个是我自己的想法。我使用 nodejs+express+superagent。说实话,nodejs对后台的数据真的很友好。然后我使用 Sequelize 进行 ORM 对象映射,确实非常好。方便。

  这也是要熟悉express的架构,以后再补坑,虽然坑的不多。

  我还为 Sequelize 文档做了一个镜像仓库,方便访问。

  但是,在 JavaScript 中编写程序时,有一点是无法避免的,那就是异步操作。

  JavaScript作为浏览器的主要逻辑实现语言,对于支持网络操作是必不可少的。如果浏览器不使用异步获取数据,就会出现页面加载慢等问题,用JavaScript编写的后端也无法避免处理异步操作。,比较头疼的是循环异步操作。我在网上查了很多文件。主要的解决方案是递归地循环嵌套promise,然后确保获取到最后一个promise对象,然后等待他的resolve或者reject。

  让我们详细谈谈这些项目。

  丁香园数据爬取

  这个项目我是自发开始的,大概用了三四天的时间。

  分析页面数据

  打开丁香园的网站,右键查看网页源代码,可以看到丁香园的数据是后端渲染出来的,所有需要的数据都嵌入到了JavaScript中json 格式的 HTML。

  

  事实上,最初的丁香园页面并不是这样的。一开始不是很直观,都是用html标签写的。

  估计是为了方便网友抓取它的数据吧?毕竟写html+JavaScript对爬虫很有好处

  而且里面几乎所有的数据都是完美而严格的json格式,用JSON.parse()就行了。后台没什么好说的,写个定时器,定时爬取。公开一些接口可以在 GitHub ⭐ 上收获。

  联想虚拟货币爬行

  这是关弟兄让我做的一个项目。毕竟,这是我人生中的第一次外包。我犹豫了两分钟,立刻开始了。第一天,我花了半天时间研究页面并分析困难。

  第一点是我在这部分遇到的第一个坑。因为我之前做的是一个不需要登录的页面,只能直接分析得到的html数据,所以上网查了一些资料。

  其实解决方法很简单。就是模拟登录操作,获取联想服务器返回的cookie数据,然后带着这个cookie访问币种查询页面。

  以下是我对网络安全的一些看法:

  网页安全吗?

  不,没有网页是安全的,纯网页几乎不可能完全安全,所以很多网上银行都需要外挂一些硬件工具来保证安全。

  那么一个网页可以相对安全吗?

  是的,而且应该是。

  使用 session 或 cookie 或 token 区分用户属性,防止未登录的未知用户查看敏感页面,并添加过期功能,确保数据安全。

  使用不可逆加密来保护用户输入的密码。只有这样,后台才能在不知道用户真实密码的情况下确认用户的登录状态。个人认为MD5加密对于我这个级别来说是比较好的用户信息加密方式。

  在分析联想的登录界面时,我发现了一个让我哭笑不得的地方。

  百度百科

  Base64 是 Internet 上传输 8Bit 字节码最常见的编码方法之一。Base64 是一种基于 64 个可打印字符表示二进制数据的方法。可以查看RFC2045~RFC2049,里面有MIME的详细规范。

  Base64 编码是一种二进制到字符的过程,可用于在 HTTP 环境中传送更长的标识信息。使用 Base64 编码是不可读的,需要先解码才能读取。

  连联想的一些登录页面,密码都是明文传输的……联想的技术水平我真的无语,具体是哪些页面就不说了。

  解决了登录问题后,基本搞定了大半。

  然后是运维和调优。这段时间,当IP被封时,我设置了爬取时间间隔,基本没有问题。

  如何获取信息

  有两种主要类型的网页

  后端渲染SSR页面,或者prerender预渲染单页应用,前端请求数据前端渲染

  第二种对爬虫不友好。只能手动找前端接口,然后看运气能不能请求对应的数据,比较随机。

  在第一种情况下,我现在主要使用正则表达式。JavaScript对正则表达式比较友好,操作DOM也很方便。基本流程是

  在使用正则表达式之前,您可以使用 DOM 操作工具来缩小搜索范围以方便匹配。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线