#include #include #include #include <curl/curl.h>

// 回调函数,用于处理下载的数据 size_t WriteCallback(void* contents, size_t size, size_t nmemb, std::string* output) { size_t totalSize = size * nmemb; output->append((char*)contents, totalSize); return totalSize; }

// 根据基因名从ENA官网获取Project号 std::string getProjectNumber(const std::string& geneName) { std::string url = "https://www.ebi.ac.uk/ena/data/search?query=" + geneName; std::string response;

CURL* curl = curl_easy_init();
if (curl) {
    curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);
    CURLcode res = curl_easy_perform(curl);
    curl_easy_cleanup(curl);

    if (res != CURLE_OK) {
        std::cerr << "Failed to download data from ENA." << std::endl;
        return "";
    }
} else {
    std::cerr << "Failed to initialize CURL." << std::endl;
    return "";
}

// 从下载的数据中提取Project号
size_t startPos = response.find("studyId\":\"");
if (startPos == std::string::npos) {
    std::cerr << "Failed to find Project number in the response." << std::endl;
    return "";
}
startPos += 10;
size_t endPos = response.find("\"", startPos);
if (endPos == std::string::npos) {
    std::cerr << "Failed to find Project number in the response." << std::endl;
    return "";
}

return response.substr(startPos, endPos - startPos);

}

int main() { std::string geneName; std::cout << "Enter gene name: "; std::cin >> geneName;

std::string projectNumber = getProjectNumber(geneName);
if (!projectNumber.empty()) {
    std::ofstream outputFile("project_number.txt");
    if (outputFile.is_open()) {
        outputFile << projectNumber;
        outputFile.close();
        std::cout << "Project number saved to project_number.txt" << std::endl;
    } else {
        std::cerr << "Failed to open output file." << std::endl;
    }
}

return 0;

}

更改下面的代码根据输入的基因名字从ENA官网上下载对应的Project号并输出为txt文件:#include iostream#include fstream#include string#include curlcurlh 回调函数用于处理下载的数据size_t WriteCallbackvoid contents size_t size size_t nmemb stdstring outpu

原文地址: https://www.cveoy.top/t/topic/injb 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录