百独托管7500 紫田网络超高转化播放器收cps[推荐]速盾CDN 免实名免备防屏蔽阿里云 爆款特卖9.9元封顶提升alexa、IP流量7Q5团队
【腾讯云】中小企福利专场【腾讯云】多款产品1折起高防 随时退换 好耶数据小飞国外网赚带你月入万元炎黄网络4H4G10M 99每月
香港带宽CN2/美国站群优惠中客数据中心 服务器租用联盟系统移动广告平台 中易企业专场腾讯云服务器2.5折九九数据 工信部正规资质
腾讯云新用户大礼包代金券高价收cpa注册量高价展示【腾讯云】2核2G/9.93起租服务器找45互联 随时退换阿里云 短信服务 验证秒达

[其它内容] 如何使用libmicrohttpd库的C++采集百度图片库 [复制链接]
查看:162 | 回复:1

1477

主题

1656

帖子

9

积分

落伍者(一心一意)

Rank: 1

贡献
685
鲜花
0
注册时间
2016-6-22

落伍者落伍微信绑定落伍手机绑定

发表于 2023-10-17 14:44:53 | 显示全部楼层 |阅读模式 来自 中国江苏淮安
22222.webp.jpg
我们在工作的时候,有时需要使用大量的图片,百度其实是一个非常庞大的图片资源库,几乎涵盖了我们需要的所有种类的图片,今天我们就试着使用libmicrohttpd库的C++程序来写一个采集百度图片的程序,用于采集百度的图片,一起来学习一下吧。

```cpp

#include

#include

#include

#include

#include

using namespace std;

// 获取代理服务器函数

vector get_proxy() {

vector proxies;

// 使用CURL获取服务器列表

CURL *curl;

CURLcode res;

string url = "https://www.duoip.cn/get_proxy";

curl = curl_easy_init();

if(curl) {

string proxy_str;

res = curl_easy_setopt(curl, CURLOPT_URL, url.c_str());

if(res == CURLE_OK) {

res = curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, NULL);

if(res == CURLE_OK) {

res = curl_easy_perform(curl, &proxy_str);

if(res == CURLE_OK) {

// 将获取到的服务器添加到vector中

stringstream ss(proxy_str);

string item;

while(getline(ss, item, ',')) {

proxies.push_back(item);

}

}

}

}

curl_easy_cleanup(curl);

}

return proxies;

}

int main() {

vector proxies = get_proxy();

if(!proxies.empty()) {

// 使用第一个服务器进行爬取

string proxy = proxies[0];

cout << "Using proxy: " << proxy << endl;

// 创建一个microhttpd服务器

struct MHD_Daemon *daemon;

daemon = MHD_start_daemon(MHD_USE_THREAD_PER_CONNECTION, 8080, NULL, NULL, &#8465;_handler, NULL);

if(daemon) {

// 等待服务器关闭

MHD_wait_forever(daemon);

}

}

return 0;

}

// 处理图像请求的函数

int image_handler(void *cls, struct MHD_Connection *connection,

const char *url, const char *method, const char *version,

const char *upload_data, size_t *upload_data_size) {

// 检查URL,确保是/image请求

if(strcmp(url, "/image") == 0) {

// 使用CURL下载图像

CURL *curl;

CURLcode res;

string image_url = "https://www.baidu.com/img/bd_logo1.png";

curl = curl_easy_init();

if(curl) {

res = curl_easy_setopt(curl, CURLOPT_URL, image_url.c_str());

if(res == CURLE_OK) {

res = curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, NULL);

if(res == CURLE_OK) {

res = curl_easy_perform(curl, NULL);

if(res == CURLE_OK) {

// 将图像数据发送到客户端

const char *header = "Content-Type: image/png\r\n\r\n";

MHD_send_response(connection, MHD_HTTP_OK, header, strlen(header));

res = curl_easy_getinfo(curl, CURLINFO_RESPONSE_SIZE, &(size_t) 1);

if(res == CURLE_OK) {

MHD_send_response_chunk(connection, image_url.c_str(), image_url.size());

}

}

}

}

curl_easy_cleanup(curl);

}

return MHD_YES;

}

return MHD_NO;

}

```

怎么样,你学会了吗?利用这个简单的程序就可以轻松采集到很多百度图片资源,方便用于我们的学习。不过请注意,这个示例仅用于教学目的,并不是一个完整的爬虫程序,我们在实际运用中,还需要根据自身的需求,进行一些修改,希望今天的内容能对大家有所帮助。
企业专线拨号VPS动态IP派克斯ADSL本地拨号,联系QQ174629754
回复

使用道具 举报

552

主题

1277

帖子

15

积分

落伍者(一心一意)

Rank: 1

贡献
1417
鲜花
0
注册时间
2017-10-11

落伍手机绑定落伍者

发表于 2023-10-18 10:07:58 | 显示全部楼层 来自 中国重庆
感谢楼主分享


重庆污水处理设备[url]http://www.cqcfjd.com/[/url]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

论坛客服/商务合作/投诉举报:2171544 (QQ)
落伍者创建于2001/03/14,本站内容均为会员发表,并不代表落伍立场!
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论!
落伍官方微信:2030286 邮箱:(djfsys@gmail.com|tech@im286.com)
© 2001-2014

浙公网安备 33060302000191号

浙ICP备11034705号 BBS专项电子公告通信管[2010]226号

  落伍法律顾问: ITlaw-庄毅雄

手机版|找回帐号|不能发帖?|Archiver|落伍者

GMT+8, 2024-11-27 02:15 , Processed in 0.064215 second(s), 35 queries , Gzip On.

返回顶部