8.6 并发的web爬虫
知识点
- 1.用bfs(广度优先)算法来抓取整个网站
- 2.每一个彼此独立的抓取命令可以并行进行IO,最大化利用网络资源
代码
func test_web_crawler() {
//初步11111
//crawl_one()
//优化并发数量22222
//第二个问题是这个程序永远都不会终止,即使它已经爬到了所有初始链接衍生出的链接
//crawl_one()
//优化并发程序能够终止33333
crawl_one()
}
/*
练习 8.6: 为并发爬虫增加深度限制。
也就是说,如果用户设置了depth=3,
那么只有从首页跳转三次以内能够跳到的页面才能被抓取到。
*/
var depths int64 = 3
var depthFirst int64 = 0
var tokens = make(chan struct{}, 20)
func web_crawl_two(url string) []string {
fmt.Println(url)
if