[问题] 关于网页爬文的连线设定

楼主: lueichun (no anonymous)   2018-11-08 17:32:55
我现在尝试从PTT八卦版爬文,想爬出乡民推文的ID和内容。
我透过八卦版的URL,连线到八卦版:
https://www.ptt.cc/bbs/Gossiping/index.html
这是八卦版最新网页的URL。
前一页的URL:
https://www.ptt.cc/bbs/Gossiping/index39000.html
多出“39000”这个页码,依此类推,前面的网页,页码会是
38999->38998->38997......一路往下。
我现在的问题是,这样的话每一页的URL都不一样,那么是不是变成要爬每一页时,
都变成要重新new一个新的connection??
但是真的这样做的话,光是开启、关闭connection就耗掉很多时间了。
我有使用多执行绪,让code执行的快一点,但也就快一点而已,
整体来看还是跑得很慢。
所以想请问,现在面对这么多的url,从39000->1,总共快4万笔url,
有没有比较快的连线方式呢?
不然我现在的作法,是一个url就开一个connection,真的很花资源又很花时间。
作者: sqrt998001 (平方根999)   2018-11-08 19:25:00
connection pool?
作者: swpoker (swpoker)   2018-11-09 08:09:00
同上,只要仔细处理close exception就好了
楼主: lueichun (no anonymous)   2018-11-09 12:58:00
所以即使url都不同,也可用连线池?
作者: ssccg (23)   2018-11-09 18:12:00
同一个server,是同样的socket啊URLConnection没有api可以直接重用,但是底层JDK其实会重用Socket,只是有些条件(可以查http keep alive)当然也可以选择有api能让你自己控制connection pool的lib另外Server支援的话,可以改用HTTP/2

Links booklink

Contact Us: admin [ a t ] ucptt.com