Սկիզբ » Ուսումնական նյութեր » Ծրագրավորում » Ծրագրավորման լեզուներ » C և C++ » Պարզագույն web page saver կամ ինչպես գեներացնել python script C++ -ով:

Պարզագույն web page saver կամ ինչպես գեներացնել python script C++ -ով:

| Ապրիլ 4, 2013 | Մեկնաբանված չէ |

Այս հոդվածում բերված է C++ -ով python սկրիպտերի գեներացման օրինակ: Մեր ծրագիրը գեներացնում և թողարկում է python սկրիպտը, որն էլ պատճենում և պահպանում է կայքի էջը` առանց նկարների և այլ կայքին հարակից ֆայլերի պատճենման, որոնք նույնպես անկասկած հեշտությամբ կարելի է պատճենել, փոքր ինչ կատարելագործելով բերված կոդը: Անշուշտ կայքի պատճենման և պահպանման ողջ ֆունկցիոնալությունը կարելի է իրականացնել C++ -ով, բայց python լեզուն, որը ունի շատ հզոր և բազմազան գրադարաններ, հնարավորություն է տալիս այդ գրադարանների միջոցներով շատ կարճ ժամանակում, հեշտ կատարել բավականին բարդ և աշխատատար գործողություններ և երբ արագագործության խնդիրը առաջնային չէ, ապա python սկրիպտերի օգտագործումը իդեալական տարբերակ է:

Նախ և առաջ բերենք C++ -ով գրված կոդը, այնուհետև կանցնենք նաև բացատրությանը.

page_saver.hpp
#ifndef PAGE_SAVER_HPP
#define PAGE_SAVER_HPP

#include <string.h>

class page_saver
{
public:
    page_saver(){}
    std::string generate_python_script(const std::string& url, const std::string& path);
    page_saver(const page_saver& p);
    page_saver& operator=(const page_saver& p);
};

#endif

page_saver.cpp

#include <fstream>
#include <stdio.h>

#include "page_saver.hpp"

std::string page_saver::generate_python_script(const std::string& url, const std::string& path)
{
    std::ofstream ss;
    std::string page(path + ".html");
    std::string path_name(path + ".py");
    const char* p = path_name.c_str();
    ss.open(p);
    ss << "import urllib.request \n"
      << "file = urllib.request.urlopen(" << "\"" << url << "\"" << ")\n"
      << "s = file.read()\n"
      << "f = open(" << "\"" << page
      << "\", 'wb') \n"
      <<"f.write(s)\n"
      << "f.close()\n";
      return p;
}

Բերենք նաև թեսթը՝ main.cpp

#include <iostream>
#include <stdlib.h>

#include "page_saver.hpp"

int main(int argc, char* argv[])
{
    std::string arg1 = argv[1];
    std::string arg2 = argv[2];
    page_saver p;
    std::string scr_path = p.generate_python_script(arg1, arg2);
    const char* scr = scr_path.c_str();
    system(scr);
    return 0;
}

Կարծում եմ page_saver.hpp և main.cpp ֆայլերում գրված կոդերը հասկանալի են: page_saver.cpp ֆայլը՝ 13-ից 19 տողերում, պարունակում է  python սկրիպտի գեներացման կոդը: Նախ օգտագործելով urllib գրադարանի urlopen ֆունկցիան ֆայլի տիպի օբյեկտում ստանում ենք  կայքի html կոդը: Այդ օբյեկտի հետ կարելի է աշխատել ինչպես սովորական ֆայլերի հետ: Այնուհետև այդ ֆայլի պարունակությունը կարդացվում է  s փոփոխականի մեջ: Hard disk -ում ստեղծվում է նոր ֆայլ (16-րդ տող) և s փոփոխականի պարունակությունը գրվում է այդ ֆայլի մեջ: Արդյունքում ստեղծվում են երկու ֆայլեր, որոնցից մեկը python-ի սկրիպտային ֆայլն է, մյուսը՝ պահպանվող կայքի html ձևաչափով ֆայլը: Այնուհետև արդեն main.cpp ֆայլում թողարկում ենք python -ի սկրիպտային ֆայլը՝ տալով ծրագրին երկու արգումենտ, առաջինը պահպանվող կայքի url-ը, օրինակ՝ http://32bit.me/?p=1146, մյուսը պահմանման ճանապարհը, օրինակ՝ I:\\python_scripy:

 

Պարզագույն web page saver կամ ինչպես գեներացնել python script C++ -ով:, 10.0 out of 10 based on 7 ratings

Նշագրեր: , ,

Բաժին: C և C++, Python, Ծրագրավորում, Վեբ

Կիսվել , տարածել , պահպանել

VN:F [1.9.20_1166]
Rating: 10.0/10 (7 votes cast)

Մեկնաբանեք

Կհաստատվեն միայն մեսրոպատառ հայերենով գրած մեկնաբանությունները

262