socket網路套接字

2021-09-26 05:26:49 字數 1989 閱讀 2664

爬蟲的概念:

爬蟲的應用:

1. 資料採集

大資料時代來臨,資料就是核心,資料就是生產力,越來越多的企業開始注重收集使用者資料,而爬蟲技術是收集資料的一種重要手段。

2. 搜尋引擎

3. 模擬操作

爬蟲也被廣泛用於模擬使用者操作,測試機械人,灌水機械人等。

爬蟲難點主要分為兩個方向

資料的獲取

網路公共資源都是為使用者準備的,為了避免被爬蟲採集,服務端會設定非常多的圖靈測試,阻止爬蟲的惡意爬取,也即是反爬措施。爬蟲開發工程師在開發爬蟲時,需要解決這些反爬措施。我們在開發爬蟲的過程中,有很大一部分的工作就是處理這些反爬措施。

採集的速度

大資料時代,需要巨大的資料量,動輒千萬條的級別,甚至上億條。如果採集速度跟不上,耗時過長,那麼就達不到商業要求。一般我們會採取併發以及分布式來解決速度上的問題。這也是爬蟲開發過程中的另外乙個重心。

在實際開發中,爬蟲的一般開發流程

1,確定目標資料

2,分析請求流程

3,構造請求報文

4,進行資料清洗

5,實現資料持久化

低階別的網路服務支援基本的 socket,它提供了標準的 bsd sockets api,可以訪問底層作業系統socket介面的全部方法。

高階別的網路服務模組 socketserver, 它提供了伺服器中心類,可以簡化網路伺服器的開發。

一些常使用的socket函式

首先匯入socket 和 re 模組

import re

import socket

建立客戶端

client = socket.socket()

client.connect(('www.baidu.com',80)) 注意:這裡面一定是個元組()

構造http請求報文

data = b'get / http/1.0\r\nhost: www.baidu.com\r\n\r\n' 請求方法後面一定要加上乙個空格

#客戶端傳送資料

client.send(data)

#定義乙個二進位制變數使用者接收響應資料

response = b''

#接收響應資料

temp = client.recv(1024)

while temp:

response += temp

temp = client.recv(1024)

with open('sockec_by_baidu_spider.html','wb') as f: 開啟乙個檔案,以二進位制的方式寫入檔案內容

f.write(response)

print(response)

print(len(re.findall(b'\r\n\r\n(.*)',data,re.s)[0]))

注意 構造http請求報文的格式為

執行完成過後會在當前資料夾下面生成乙個html檔案

​ 1,利用socket建立乙個客戶端

​ 2,連線要爬取的**,ip或網域名稱,加上埠,http埠為80,https埠為443,注意這裡面一定是元組的序列型別

​ 3,構造http請求報文

​ 4,傳送資料

​ 5,接收資料

網路套接字(socket)

include uint32 t htonl uint32 t hostlong 主機位元組序轉網路位元組序 uint32 t htons uint32 t hostshort uint32 t ntohl uint32 t hostlong 網路位元組序轉主機位元組序 uint32 t ntohl...

網路 Socket套接字

socket介面在讀寫資料時,都是按字串的方式接收的,若要傳輸乙個 結構化的資料 就需要使用序列化和反序列化。序列化是將資料由多變到一的過程,反序列化是將資料由一分為多的過程。ip位址唯一標識公網當中的一台主機 埠號唯一標識互聯 定主機上的特定程序。每一對埠號加ip位址能夠唯一標識網路中一台主機上唯...

網路程式設計 Socket 套接字

網路程式設計 目前較為流行的網路程式設計模型是客戶機 伺服器 c s 結構。即通訊雙方一方作為服務 器等待客戶提出請求並予以響應。客戶則在需要服務時向伺服器提出申請。伺服器一般作為 守護程序始終執行,監聽網路埠,一旦有客戶請求,就會啟動乙個服務程序來響應該客 戶,同時自己繼續監聽服務埠,使後來的客戶...