使用socket实现网页内容抓取

例如抓取  blog.csdn.net/carson_ho/article/details/79157408 该链接的网页内容

示例代码如下:

#include <iostream>
#include <vector>
#include <list>
#include <map>
#include <queue>
#include <string>
#include <utility>
//#include <regex>
#include <fstream>
#include <WinSock2.h>
#include <Windows.h>

#pragma comment(lib, "ws2_32.lib")

using namespace std;

void startupWSA()
{
	WSADATA wsadata;
	WSAStartup( MAKEWORD(2,0), &wsadata);
}

inline void cleanupWSA()
{
	WSACleanup();
}

inline pair<string, string> binaryString(const string &str, const string &dilme)
{
	pair<string, string> result(str, "");
	int pos = str.find(dilme);
	if ( pos != string::npos )
	{
		result.first = str.substr(0, pos);
		result.second = str.substr(pos + dilme.size());
	}
	return result;
}

inline string getIpByHostName(const string &hostName)
{
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现网络爬虫可以使用Socket编程,通过TCP/IP协议获取网页内容。以下是基本的实现步骤: 1. 创建Socket,建立连接。 2. 向服务器发送HTTP请求,获取网页内容。 3. 解析网页内容,提取需要的信息。 4. 将提取的信息存储到本地或进行其他处理。 下面是一个简单的示例: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <arpa/inet.h> #define BUF_SIZE 1024 void error_handling(char *msg); int main(int argc, char *argv[]) { int sock; struct sockaddr_in serv_addr; char request[BUF_SIZE]; char response[BUF_SIZE]; if(argc!=2) { printf("Usage : %s <IP>\n", argv[0]); exit(1); } sock = socket(PF_INET, SOCK_STREAM, 0); if(sock == -1) error_handling("socket() error"); memset(&serv_addr, 0, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = inet_addr(argv[1]); serv_addr.sin_port = htons(80); if(connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr))==-1) error_handling("connect() error"); sprintf(request, "GET / HTTP/1.1\r\nHost: %s\r\nConnection: close\r\n\r\n", argv[1]); write(sock, request, strlen(request)); while(read(sock, response, BUF_SIZE-1)>0) { printf("%s", response); memset(response, 0, sizeof(response)); } close(sock); return 0; } void error_handling(char *msg) { fputs(msg, stderr); fputc('\n', stderr); exit(1); } ``` 这个示例使用Socket连接到一个Web服务器,发送HTTP请求获取网页内容,并将网页内容打印到控制台上。你可以根据需要对代码进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值