platonai / exotic-amazon

A complete solution to crawl amazon at scale completely and accurately.
143 stars 46 forks source link

Web socket connection closed due to BufferOverflow raised by Tyrus client #35

Open ws4435700 opened 10 months ago

ws4435700 commented 10 months ago

你好,关于以上问题,我在范例里面看到可以通过设置系统参数 System.setProperty( DefaultWebSocketContainerFactory.WEBSOCKET_INCOMING_BUFFER_PROPERTY, Long.toString((long) DefaultWebSocketContainerFactory.MB * 24)); 来解决,但是我在代码里设置后,还是不能正常转化我需要爬取的网页。

1.请问我是否要像范例里一样,对page.onLoadEventFired进行重写? 2.请问这个Web socket的默认超时时间是多久?可以重新设置吗?

galaxyeye commented 9 months ago

访问那个网页导致的?出现这种情况很意外。

ws4435700 commented 9 months ago

额。这不是访问亚马逊的网页导致的 我是基于您这个项目的基础修改后爬取另一个购物网站。 这个网址的分页并不能通过拼接url直接访问,需要在页面处理的时候重复的点击下一页,使得所有商品在一个页面中全部展示。 我看报这个错误的原因应该是因为我重复点击下一页消耗了太多时间,所以导致 Tyrus client关闭了。

galaxyeye commented 7 months ago

额。这不是访问亚马逊的网页导致的 我是基于您这个项目的基础修改后爬取另一个购物网站。 这个网址的分页并不能通过拼接url直接访问,需要在页面处理的时候重复的点击下一页,使得所有商品在一个页面中全部展示。 我看报这个错误的原因应该是因为我重复点击下一页消耗了太多时间,所以导致 Tyrus client关闭了。

系统设置了每网页的超时时间,已防止某些网页挂死。如果需要在网页上停留更多时间,需要设置超时时间。

System.setProperty(FETCH_TASK_TIMEOUT, Duration.ofDays(1).toString())
System.setProperty(PRIVACY_CONTEXT_IDLE_TIMEOUT, Duration.ofDays(1).toString())
System.setProperty(FETCH_PAGE_LOAD_TIMEOUT, Duration.ofDays(1).toString())

或者使用 Single Page Application 模式:

BrowserSettings.withSPA()