Я пытаюсь передать URL в конструктор libcurl, в котором он будет перенаправлять URL и дать мне доступ для анализа html, я знаю, что это работает, потому что я использую его из открытого c кода, который кто-то еще опубликовал, но это немного старше. По сути, я передаю сайт с тикером, который ввел пользователь, и мне нужно, чтобы он вывел на экран конкретное число c, я также использую QT. Похоже, что данные URL из libcurl хранятся в curlBuffer, но я немного запутался, когда я выводил web.getData (), который возвращает curlBuffer, ничего не выходит, присоединен мой класс CurlObj, а также мой основной код для передачи вещей в Я был бы признателен за любую помощь, которую вы мне оказали, поскольку я довольно начинающий программист, как вы, вероятно, можете сказать.
#ifndef H_WEBCURL_H
#define H_WEBCURL_H
#include <curl.h>
#include <iostream>
using namespace std;
//CurlObj is used to get the html from the given webpage
class CurlObj {
public:
CurlObj (std::string url) {
curl = curl_easy_init();
if (!curl) {
throw std::string ("Curl did not initialize.");
}
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &CurlObj::curlWriter);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &curlBuffer);
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
curl_easy_perform(curl);
};
static int curlWriter(char *data, int size, int nmemb, std::string *buffer) {
int result = 0;
if (buffer != NULL) {
buffer->append(data, size * nmemb);
result = size * nmemb;
}
return result;
}
std::string getData() {
return curlBuffer;
}
protected:
CURL * curl;
std::string curlBuffer;
};
#endif // H_WEBCURL_H
void MainWindow::on_symbolSearch_returnPressed()
{
QString symbolSearched = ui->symbolSearch->text();
string symbolSearchedStd = symbolSearched.toStdString();
pageAddress = "https://www.wsj.com/market-data/quotes/" + symbolSearchedStd + "/financials";
cout << pageAddress << endl;
//Gets webpage html file
CurlObj webPage(pageAddress);
try
{
WebScrapper web = WebScrapper(symbolSearchedStd, webPage.getData());
}
catch (std::exception e)
{
cout << "\n" << symbolSearchedStd << " is not a valid ticker." << std::endl;
}
}