"); //-->
现在网络爬虫看起来是很简单,如果做爬虫就是这种想法是错误的。爬虫设计的东西有许多,无论是爬虫框架,爬虫软件,爬虫程序,爬虫策略,编写爬虫都是比较麻烦的,写好爬虫程序后,从网站抓取数据似乎易如反掌。当然,当你大量在网站上抓东西时,某网站限制了爬虫行为,事情很快就会变得非常棘手。
对于那些对大量爬取团队或者企业来说,需要仔细了解爬虫的策略方案
大型业务抓取和普通的网页爬取应用不一样的是,采集的量也完全不一样。
由于时间通常是限制因素,大量数据抓取要求你的爬虫要以很高的速度抓取网页但又不能拖累数据质量,这时候企业用户就可以启用多线程爬虫
什么是多线程?
多线程是指爬虫程序中有多个命令同时执行,在一个程序中可以同时运行多个不同的线程来执行不同的任务,简单来说就一个单线程下面创建多个线程同时执行命令完成采集。
多线程的好处:
可以提高采集速率。在多线程爬虫程序中,一个线程采集的量比较小,执行多线程就可以加大采集量,提供采集的速率。
多线程与单线程的区别:
多线程能同时执行命令提高采集效率,单线程就是一个一个命令执行,采集速率较慢
多线程爬虫源码:
package main
import (
"net/url"
"net/http"
"bytes"
"fmt"
"io/ioutil"
)
// 代理服务器(产品官网 www.16yun.cn)
const ProxyServer = "t.16yun.cn:31111"
type ProxyAuth struct {
Username string
Password string
}
func (p ProxyAuth) ProxyClient() http.Client {
var proxyURL *url.URL
if p.Username != ""&& p.Password!="" {
proxyURL, _ = url.Parse("http://" + p.Username + ":" + p.Password + "@" + ProxyServer)
}else{
proxyURL, _ = url.Parse("http://" + ProxyServer)
}
return http.Client{Transport: &http.Transport{Proxy:http.ProxyURL(proxyURL)}}
}
func main() {
targetURI := "https://httpbin.org/ip"
// 初始化 proxy http client
client := ProxyAuth{"username", "password"}.ProxyClient()
request, _ := http.NewRequest("GET", targetURI, bytes.NewBuffer([] byte(``)))
// 设置Proxy-Tunnel
// rand.Seed(time.Now().UnixNano())
// tunnel := rand.Intn(10000)
// request.Header.Set("Proxy-Tunnel", strconv.Itoa(tunnel) )
response, err := client.Do(request)
if err != nil {
panic("failed to connect: " + err.Error())
} else {
bodyByte, err := ioutil.ReadAll(response.Body)
if err != nil {
fmt.Println("读取 Body 时出错", err)
return
}
response.Body.Close()
body := string(bodyByte)
fmt.Println("Response Status:", response.Status)
fmt.Println("Response Header:", response.Header)
fmt.Println("Response Body:\n", body)
}
}专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
基于onsemi NCP1341B1 65W Adapter 电源方案
C51源程序集
三菱FX系列PLC教程 22 —— FX系列的置位与复位指令(SET RST)
EM78单片机应用点滴
SiC为数据中心的冷却风扇提供高密度电源
富捷电阻:卓越品质与成本优势的完美融合
单芯片1000Hz锯齿波电路
三菱FX系列PLC教程 24 —— FX系列的梯形图编程规则
低至DC高至20MHz射频的方波振荡器
GCC AVR C语言设计软件
为什么应该在车辆系统中建立对啮齿动物的抵抗力
Franklin C51 V8.63
半导体「权力游戏」:GAAFET
简单的电子催眠器
经验点滴之三:串行烧写器PICSTART-PLUS
点信号发生器
Commix混合串口调试工具
一文读懂 | 什么是雷达?
通过Analog与PWM调整输出功率1KW智能工业电源
经验点滴之四:PICMATE2002仿真器
APEC 2025最具颠覆性的技术
Optical Networking Solutions Electronic Catalog
三菱FX系列PLC教程 20 —— FX系列的取脉冲指令(LDP、LDF、ANDP、ANDF、ORP、ORF)
vxworks 系统模式
新关税政策下美国科技行业走向
10BASE-T1L单对以太网电缆长度和链路性能
三菱FX系列PLC教程 23 —— FX系列的主控及主控复位指令(MC、MCR)
三菱FX系列PLC教程 21 —— FX系列的微分输出指令(PLS PLF)
发光电子催眠器
小文摘抄