C语言爬取图片代码:从网页下载图片到本地
以下是一个使用 C 语言编写的简单爬取图片的代码,你可以输入一个网址,程序将会将该网页中的所有图片下载到本地。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_URL_LENGTH 1000
#define MAX_FILE_NAME_LENGTH 100
void downloadImage(char* imageUrl, char* fileName) {
FILE* fp = fopen(fileName, "wb");
if (fp == NULL) {
printf("Failed to open file for writing\n");
return;
}
// 下载图片
FILE* image = popen(imageUrl, "r");
if (image == NULL) {
printf("Failed to download image\n");
return;
}
// 写入文件
char buffer[1024];
size_t bytesRead;
while ((bytesRead = fread(buffer, 1, sizeof(buffer), image)) > 0) {
fwrite(buffer, 1, bytesRead, fp);
}
// 关闭文件和进程
fclose(fp);
pclose(image);
printf("Downloaded image: %s\n", fileName);
}
int main() {
char url[MAX_URL_LENGTH];
printf("Enter a URL: ");
fgets(url, sizeof(url), stdin);
url[strcspn(url, "\n")] = '\0'; // 去除输入中的换行符
// 使用wget命令获取网页内容
char command[MAX_URL_LENGTH + 10] = "wget -qO- ";
strcat(command, url);
// 执行wget命令并读取输出
FILE* webpage = popen(command, "r");
if (webpage == NULL) {
printf("Failed to retrieve webpage\n");
return 1;
}
char imageTag[] = "<img";
char* imageStart;
char* imageEnd;
char imageUrl[MAX_URL_LENGTH];
char fileName[MAX_FILE_NAME_LENGTH];
// 在网页中搜索图片链接
while (fgets(imageUrl, sizeof(imageUrl), webpage) != NULL) {
if ((imageStart = strstr(imageUrl, imageTag)) != NULL) {
imageStart = strchr(imageStart, '\"');
imageStart++;
imageEnd = strchr(imageStart, '\"');
*imageEnd = '\0';
strcpy(fileName, strrchr(imageStart, '/') + 1); // 从URL中提取文件名
downloadImage(imageStart, fileName);
}
}
// 关闭文件和进程
pclose(webpage);
return 0;
}
请注意,该代码依赖于系统中已安装wget命令。在 Linux 系统上,可以通过 sudo apt-get install wget 进行安装。在 Windows 系统上,可以下载并安装 wget 的 Windows 版本,并将其可执行文件添加到系统路径中。
使用该代码时,请在命令行中编译和运行。输入一个网址,程序将会下载该网页中的所有图片,并将其保存到当前目录下。
原文地址: https://www.cveoy.top/t/topic/p1ae 著作权归作者所有。请勿转载和采集!