Пример #1
0
int main(int argc, char *argv[])
{
  CURL *conn = NULL;
  CURLcode code;
  std::string title;

  // Ensure one argument is given

  if (argc != 2)
  {
    fprintf(stderr, "Usage: %s <url>\n", argv[0]);

    exit(EXIT_FAILURE);
  }

  curl_global_init(CURL_GLOBAL_DEFAULT);

  // Initialize CURL connection

  if (!init(conn, argv[1]))
  {
    fprintf(stderr, "Connection initializion failed\n");

    exit(EXIT_FAILURE);
  }

  // Retrieve content for the URL

  code = curl_easy_perform(conn);
  curl_easy_cleanup(conn);

  if (code != CURLE_OK)
  {
    fprintf(stderr, "Failed to get '%s' [%s]\n", argv[1], errorBuffer);

    exit(EXIT_FAILURE);
  }

  // Parse the (assumed) HTML code

  parseHtml(buffer, title);

  // Display the extracted title

  printf("Title: %s\n", title.c_str());

  return EXIT_SUCCESS;
}
Пример #2
0
HttpPullData::HttpPullData():buffer_offset(0){
  CURLcode res;
  curl = curl_easy_init();
  if(curl) {
  	curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errorBuffer);
  	curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
  	curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer);
  	curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer);
    res = initLocServer();
    if (res != CURLE_OK) {
      fprintf(stderr, "Curl perform failed: %s\n", curl_easy_strerror(res));
    }
    
    parseHtml(buffer,0,GET_OPTIONS);
  }
}
Пример #3
0
AddFilm::AddFilm(QWidget *pwgt): QWidget(pwgt)
{
    titleLine = new QLineEdit;
    yearLine = new QLineEdit;
    directorLine = new QLineEdit;
    genreLine = new QLineEdit;
    timeLine = new QLineEdit;
    linkLine = new QLineEdit;
    urlLine = new QLineEdit;
    descriptionText = new QTextEdit;
    buttonAdd = new QPushButton(tr("Добавить"));
    downloadButton = new QPushButton(tr("Загрузить"));
    downloadHtmlButton = new QPushButton(tr("Получить информацию"));
    checkTitleButton = new QPushButton(tr("Проверить"));
    manager = new QNetworkAccessManager(this);

    QGridLayout *lay = new QGridLayout;
    lay->addWidget(new QLabel(tr("Ссылка на страницу")), 0, 0);
    lay->addWidget(urlLine, 0, 1);
    lay->addWidget(downloadHtmlButton, 0, 2);
    lay->addWidget(new QLabel(tr("Название")), 1, 0);
    lay->addWidget(titleLine, 1, 1);
    lay->addWidget(new QLabel(tr("Год")), 2, 0);
    lay->addWidget(yearLine, 2, 1);
    lay->addWidget(new QLabel(tr("Режиссер")), 3, 0);
    lay->addWidget(directorLine, 3, 1);
    lay->addWidget(new QLabel(tr("Жанр")), 4, 0);
    lay->addWidget(genreLine, 4, 1);
    lay->addWidget(new QLabel(tr("Продолжительность")), 5, 0);
    lay->addWidget(timeLine, 5, 1);
    lay->addWidget(new QLabel(tr("Ссылка на постер")), 6, 0);
    lay->addWidget(linkLine, 6, 1);
    lay->addWidget(downloadButton, 6, 2);
    lay->addWidget(new QLabel(tr("Описание")), 7, 0);
    lay->addWidget(descriptionText, 7, 1);
    lay->addWidget(buttonAdd, 8, 0, 1, 3);

    connect(buttonAdd, SIGNAL(clicked()), this, SLOT(slotAddFilm()));
    connect(downloadButton, SIGNAL(clicked()), this, SLOT(download()));
    connect(downloadHtmlButton, SIGNAL(clicked()), this, SLOT(parseHtml()));

    this->setLayout(lay);
}
Пример #4
0
	CURLcode HttpPullData::retrieveLoc(const char* townName){
		char* escTownName=(char *)curl_escape(townName,0);
		char postThis[POST_LEN];
		buffer.clear();
		initLocServer();
		buffer_offset=0;
		buffer.clear();
		sprintf(postThis,LOC_POST_STR,escTownName);
	    curl_easy_setopt(curl, CURLOPT_URL, LOC_POST_URL);
	    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postThis);
	    curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, strlen(postThis));
	    CURLcode res=curl_easy_perform(curl);
	   	if (res != CURLE_OK) {
      		fprintf(stderr, "Curl perform failed: %s\n", curl_easy_strerror(res));
    		return res;
    	}
    	parseHtml(buffer,0,GET_LOCATION);
	    return res;
	}
Пример #5
0
	CURLcode HttpPullData::retrieveAerosol(const char* townName,const char* startYear,const char* startMonth,const char* startDay,PARSE_ACTION action){
		char* escTownName=(char *)curl_escape(townName,0);
		char* escStartYear=(char *)curl_escape(startYear,0);
		char* escStartMonth=(char *)curl_escape(startMonth,0);
		char* escStartDay=(char *)curl_escape(startDay,0);
		const char* freqRange= (action==GET_AEROSOL_UV)?"UVRSR":"MFRSR";
		char postThis[POST_LEN];
		buffer.clear();
		initAerosolServer();
		buffer.clear();
		sprintf(postThis,AEROSOL_POST_STR,escTownName,freqRange,escStartYear,escStartMonth,escStartDay);
	    curl_easy_setopt(curl, CURLOPT_URL, AEROSOL_POST_URL);
	    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postThis);
	    curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, strlen(postThis));
	    CURLcode res=curl_easy_perform(curl);
	    if (res != CURLE_OK) {
      		fprintf(stderr, "Curl perform failed: %s\n", curl_easy_strerror(res));
    		return res;
    	}
	    int pos=buffer.find("</HTML>")+strlen("</HTML>");
	    buffer="<HTML><BODY>"+buffer.substr(pos,buffer.length());
	    parseHtml(buffer,0,action);
	    return res;
	}
Пример #6
0
	CURLcode HttpPullData::retrieveOzone(const char* townName,const char* startYear,const char* startMonth,const char* startDay){
		char* escTownName=(char *)curl_escape(townName,0);
		char* escStartYear=(char *)curl_escape(startYear,0);
		char* escStartMonth=(char *)curl_escape(startMonth,0);
		char* escStartDay=(char *)curl_escape(startDay,0);
		char postThis[POST_LEN];
		buffer.clear();
		initOzoneServer();
		buffer_offset=buffer.length();
		buffer.clear();
		sprintf(postThis,OZONE_POST_STR,escTownName,escStartYear,escStartMonth,escStartDay);
	    curl_easy_setopt(curl, CURLOPT_URL, OZONE_POST_URL);
	    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postThis);
	    curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, strlen(postThis));
	    CURLcode res=curl_easy_perform(curl);
	    if (res != CURLE_OK) {
      		fprintf(stderr, "Curl perform failed: %s\n", curl_easy_strerror(res));
    		return res;
    	}
	    int pos=buffer.find("</HTML>")+strlen("</HTML>");
	    buffer="<HTML><BODY>"+buffer.substr(pos,buffer.length());
	    parseHtml(buffer,0,GET_OZONE);
	    return res;
	}