C/C++实现最简单的爬虫

您所在的位置:网站首页 简易爬虫程序代码 C/C++实现最简单的爬虫

C/C++实现最简单的爬虫

2023-07-29 00:20| 来源: 网络整理| 查看: 265

作为一名程序员我觉得最简单的骚操作还是需要具备的,比如爬虫。本文主要介绍实现最简单的c++爬虫,为什么标题是c/c++呢,因为写的时候用到了一些c++内容但主要结构还是c顺序结构。主要实现了对http协议网站的图片爬取。

主要内容: 爬虫思路开发时需要注意的地方运行结果需要改进的地方完整源码 爬虫思路:

基本可分为三大步骤

用户输入起始地址创建用来保存图片的文件夹遍历搜索

第三步遍历搜索可细分为

从初始网站获取网页源码从网页源码中解析出图片地址、网站地址保存地址去除重复下载图片连接下一个网站 需注意的地方:

1、去除重复

博主将解析出的图片url存在了一个vector里,对vector里元素去重采用了先排序再删掉最末尾几个元素。因为在排序时会讲相同元素全部移至容器最末尾

void deletecp() { //去重 sort(g_photoAddr.begin(),g_photoAddr.end()); //unique只能比较相邻元素是否重复 g_photoAddr.erase(unique(g_photoAddr.begin(), g_photoAddr.end()), g_photoAddr.end()); sort(g_htmlAddr.begin(),g_htmlAddr.end()); g_htmlAddr.erase(unique(g_htmlAddr.begin(), g_htmlAddr.end()), g_htmlAddr.end()); //unique将重复的元素移到末尾,返回末尾中第一个重复值的地址 }

2、测试通信

 解析到主机ip后需要向该主机发送一个http请求用以测试能否成功通信,此处注意http请求的编写,操作字符串真的是有一些麻烦

std::string reqInfo = "GET " + (std::string)g_path + " HTTP/1.1\r\nHost:"+(std::string)g_zhuji + "\r\nConnection:Close\r\n\r\n"; r = send(g_socket,reqInfo.c_str(),reqInfo.size(),NULL); if(-1 == r) { std::cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3