Linux企業級專案實踐之網路爬蟲(7)——DNS解析
DNS 是Domain Name Service的縮寫。域名系統為Internet上的主機分配域名地址和IP地址。IP地址不易於記憶,然而域名地址相比較而言是方便於記憶的。使用者如果使用域名地址,當想獲得IP地址時,就要向域名伺服器傳送請求。這個域名伺服器就會自動把域名地址轉為IP地址返回給使用者。
爬蟲程式優化DNS請求的必要性
當爬蟲程式從HTML頁面上提取URL時,一般情況下,應該有很多都是這個站點內部的URL。那麼當這個站點裡的某個URL請求過DNS以後,就應該採用某種資料結構把這個值儲存起來。以後再發現這個站點內的URL後,就把域名部分的IP取出給這個URL,從而減少不必要的DNS請求。這樣可以大大加快抓取頁面的速度,提高效率。
優化DNS請求的方式
爬蟲程式優化DNS請求的必要性
當爬蟲程式從HTML頁面上提取URL時,一般情況下,應該有很多都是這個站點內部的URL。那麼當這個站點裡的某個URL請求過DNS以後,就應該採用某種資料結構把這個值儲存起來。以後再發現這個站點內的URL後,就把域名部分的IP取出給這個URL,從而減少不必要的DNS請求。這樣可以大大加快抓取頁面的速度,提高效率。
優化DNS請求的方式
對於同一個站點內部的頁面應該設一個資料結構以儲存,並且方便查詢。這樣,當爬蟲系統得到了一個新的URL以後,可以快速的轉換地址格式並進行連線。
void * urlparser(void *none)
{
Surl *url = NULL;
Url *ourl = NULL;
map<string, string>::const_iterator itr;
while(1) {
pthread_mutex_lock(&sq_lock);
while (surl_queue.empty()) {
pthread_cond_wait(&sq_cond, &sq_lock);
}
url = surl_queue.front();
surl_queue.pop();
pthread_mutex_unlock(&sq_lock);
ourl = surl2ourl(url);
itr = host_ip_map.find(ourl->domain);
if (itr == host_ip_map.end()) { /* not found */
/* dns resolve */
event_base * base = event_init();
evdns_init();
evdns_resolve_ipv4(ourl->domain, 0, dns_callback, ourl);
event_dispatch();
event_base_free(base);
} else {
ourl->ip = strdup(itr->second.c_str());
push_ourlqueue(ourl);
}
}
//evdns_base_free(dnsbase, 0);
//event_base_free(base);
return NULL;
}
相關文章
- 網路爬蟲專案爬蟲
- Python網路爬蟲實戰專案大全 32個Python爬蟲專案demoPython爬蟲
- 網路爬蟲(python專案)爬蟲Python
- 專案--python網路爬蟲Python爬蟲
- Python網路爬蟲實戰小專案Python爬蟲
- Python網路爬蟲實戰專案大全!Python爬蟲
- 企業資料爬蟲專案爬蟲
- Java網路爬蟲實操(7)Java爬蟲
- 2019最新《網路爬蟲JAVA專案實戰》爬蟲Java
- Java 爬蟲專案實戰之爬蟲簡介Java爬蟲
- 企業資料爬蟲專案(二)爬蟲
- 精通Scrapy網路爬蟲【一】第一個爬蟲專案爬蟲
- python網路爬蟲--專案實戰--scrapy嵌入selenium,晶片廠級聯評論爬取(6)Python爬蟲晶片
- [網路爬蟲] 網路爬蟲實踐:大麥網演唱會預約搶票 【待續】爬蟲
- 網路爬蟲——專案實戰(爬取糗事百科所有文章)爬蟲
- 網路爬蟲——爬蟲實戰(一)爬蟲
- Python爬蟲開發與專案實踐(3)Python爬蟲
- 最新《30小時搞定Python網路爬蟲專案實戰》Python爬蟲
- Linux網路中的DNS域名正向解析實操LinuxDNS
- [網路爬蟲] Jsoup : HTML 解析工具爬蟲JSHTML
- 網路爬蟲專案開發日誌(三):爬蟲上線準備爬蟲
- Datawhale-爬蟲-Task7(實戰大專案)爬蟲
- 精通 Python 網路爬蟲:核心技術、框架與專案實戰Python爬蟲框架
- 104個實用網路爬蟲專案資源整理(超全)爬蟲
- 課程設計:python_網路爬蟲專案Python爬蟲
- 爬蟲實戰專案集合爬蟲
- 爬蟲專案實戰(一)爬蟲
- 爬蟲實戰專案合集爬蟲
- Python靜態網頁爬蟲專案實戰Python網頁爬蟲
- [Python] 網路爬蟲與資訊提取(1) 網路爬蟲之規則Python爬蟲
- python網路爬蟲應用_python網路爬蟲應用實戰Python爬蟲
- 視訊教程-Python網路爬蟲開發與專案實戰-PythonPython爬蟲
- Python3網路爬蟲快速入門實戰解析Python爬蟲
- Python網路爬蟲實戰Python爬蟲
- 爬蟲專案:大麥網分析爬蟲
- 網路爬蟲之抓取郵箱爬蟲
- 爬蟲專案爬蟲
- python爬蟲實操專案_Python爬蟲開發與專案實戰 1.6 小結Python爬蟲
- Python爬蟲開發與專案實戰 4: HTML解析大法Python爬蟲HTML