C 無差別爬蟲

2021-08-30 14:01:35 字數 2252 閱讀 1226

// webwormpro.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include #include #include #include #include #include //正規表示式

#include #include #include #include #include //網路套接字頭檔案

#pragma comment(lib,"ws2_32.lib") //網路通訊需要

using namespace std;

char host[500]; //存放主機陣列

int num = 1;

char othpath[800];

string allhtml;

vector photourl;

vector comurl;

map mp;

socket sock;

bool analyurl(char *url) //分析url

void regexgetimage(string &allhtml)

//c++11正則表達四提取上的url

//預處理程式把所有的部分連線起來形成給定匹配元素的正規表示式

}void regexgetcom(string &allhtml)

//提取網頁中的http://的url

}void preconnect()//socket進行網路連線

sockaddr_in sa = ;//windows或linux下的網路程式設計結構

int n = bind(sock, (sockaddr*)&sa, sizeof(sa));//繫結套接字

if (n == socket_error)

struct hostent *p = gethostbyname(host);//根據主機名得到主機資訊

if (p == null)

sa.sin_port=htons(80);//主機位元組順序表達的16位數字

memcpy(&sa.sin_addr, p->h_addr, 4);

n = connect(sock, (sockaddr*)&sa, sizeof(sa));//發起連線請求

if (socket_error == send(sock, reqinfo.c_str(), reqinfo.size(),0))//傳送資料 }

void outimage(string imageurl)//將命名,儲存在目錄

//與正確的區別差了下面這句

n = recv(sock, buf, sizeof(buf) - 1, 0);

char *cpos = strstr(buf, "\r\n\r\n");

file.write(cpos + strlen("\r\n\r\n"), n - (cpos - buf) - strlen("\r\n\r\n"));

while ((n = recv(sock, buf, sizeof(buf) - 1, 0)) > 0)

file.close();

}void putimagetoset()//解析整個html**

regexgetimage(allhtml);//c++正規表示式提取url

regexgetcom(allhtml);//提取網頁中的http://的url

}void bfs(string beginurl)//寬度優先搜尋演算法

photourl.clear();

vector::iterator it = comurl.begin();

for (it; it != comurl.end(); it++)

comurl.clear(); }}

int _tmain(int argc, _tchar * argv)

不同元素型別的交 差 並計算 無差別

from collections.abc import iterabledef pingpu x def flat gen x def iselement e return not isinstance e,iterable and not isinstance e,str for el in x ...

C和C 中 的差別

cc 取位址 取位址位運算 位運算兩個 表示與 兩個 表示與 引用 1.c 比c多了一種新特性,即引用 如下語句,c語言中會報錯,c 中不會,因為c 中這裡表示引用 void fun2 int p c語言中匯報錯是因為 p不管是那種用法都不能作為左值 2.c語言中按指標傳遞引數的例子如下 inclu...

C 指標和引用的差別

相同點 都是位址的概念 指標指向一塊記憶體,它的內容是所指記憶體的位址 而引用則是某塊記憶體的別名。不同點 1.非空區別,在任何情況下都不能使用指向空值的引用。乙個引用必須總是指向某些物件。因此如果你使用乙個變數並讓它指向乙個物件,但是該變數在某些時候也可能不指向任何物件,這是你應該把變數宣告為指標...