java抓取网页数据(对java封装在java中写api的问题有哪些?)

优采云 发布时间: 2021-11-15 13:04

  java抓取网页数据(对java封装在java中写api的问题有哪些?)

  java抓取网页数据,就是抓取网页上面的dom元素,然后存储到相应的数据库中。上篇中,我们用java实现了一个简单的dom渲染线程,然后把视频流写入到html中,然后就可以在网页中观看。这篇我们不需要和渲染线程打交道,直接去抓视频的序列化对象。java实现getsetsplitupdatesubtract轮子哥发言:真正的进步是把一个大的问题分解成多个小问题,然后一个个解决,并不是用一种工具把它们都抓了。

  我们还是要从更本质的问题开始思考,就是视频内容会不会是一堆堆的字符串?所以今天我们需要把视频流写到html中,可以转换一下思路,把视频切成一系列的数组,然后把其中某一些值存入到文件中,再接着一层层写到html中。解决完最底层的问题,我们就可以开始思考其他组件的问题了。比如需要从java抓取视频数据之后再写到html中,还是必须解决下java和html的问题。

  如果视频是通过java下的网络方式抓取到的,没有问题,你把html文件写到一个dom元素中,然后通过java写的网络方式请求就可以了。如果数据流写进html中了,那就得自己再封装了一个网络api请求视频流。那写在java中就没办法了吗?如果问题是写在java中实现java封装过的网络api请求视频流呢?我觉得是很有可能的,因为封装在java的成本太高了,以至于大部分java程序员不愿意去解决这个问题。

  如果我们直接调用java封装过的网络api方法,就会出现一个问题,你需要写一大堆serializable和serialversionuid等等多条线程间的同步关系。对java封装在java中写api服务器来说不是一个很好的解决方案。在我看来问题是出在java封装过的网络api方法中的同步问题。如果两个线程同时向服务器发出请求,对服务器来说都是同步的。

  因为同时加载到服务器的内容都是对应的vbdisplay元素,并且这个元素可以通过java下面java.lang.abstracthandler接口中的process方法获取。但是,它们之间并不同步,因为对于服务器来说它实际上是在两个不同的线程中同时加载到vbdisplay元素。就好比同时都加载到java的两个类中,它们之间可能会出现线程不安全的问题。

  所以在写封装在java中写api服务器时,很可能出现这样的问题:比如,有一个请求要返回,返回给服务器一个vbdisplay元素,服务器并不希望同时加载java和vbdisplay元素,但是它请求的返回值只是指向vbdisplay元素的一个script标签,而vbdisplay元素是共享一个content-type类型的数据,怎么办?这个时候我们就必须使用abstracthandler来封装vbdisp。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线