Advertisement
Guest User

Untitled

a guest
Jan 27th, 2019
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.07 KB | None | 0 0
  1. const mysql2 = require('mysql2/promise');
  2. let connection;
  3. class Parser {
  4. constructor() {
  5. this.defaultConf = {
  6. version: '0.1.88',
  7. results: {
  8. flat: [
  9. ['price', 'price'],
  10. ['model', 'model'],
  11. ]
  12. },
  13. results_format: '$query: $title\\n',
  14. parsecodes: {
  15. 200: 1,
  16. },
  17. pagecount: 100,
  18. max_size: 200 * 1024,
  19. login: 'workflow',
  20. pass: 'pass',
  21. port: '3306',
  22. host: '127.0.0.1',
  23. db: 'app',
  24. };
  25. this.editableConf = [
  26. ['login', ['textfield', 'Login']],
  27. ['pass', ['textfield', 'Password']],
  28. ['port', ['textfield', 'port']],
  29. ['host',['textfield', 'host']],
  30. ['db', ['textfield', 'Database']],
  31. ];
  32. }
  33. async init(){
  34. connection = await mysql2.createConnection({
  35. host: this.conf.host,
  36. port: this.conf.port,
  37. user: this.conf.login,
  38. password: this.conf.pass,
  39. database: this.conf.db
  40. });
  41. let mainTable = await connection.query('create table if not exists main (id_ad int primary key, link varchar(200), title varchar(500), section varchar(200), countAd varchar(100),sqrent varchar(200),pricerent varchar(200), price bigint,oldprice varchar(500) ,phone varchar(500),seller varchar(200),description varchar(10000), views varchar(100), date varchar(500), city varchar(100), adres varchar(500), photo varchar(2000))');
  42. }
  43.  
  44. *parse(set, results) {
  45. //this.logger.put("Start scraping query: " + set.query);
  46.  
  47.  
  48. let response = yield this.request('GET', set.query, {}, {
  49. 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36',
  50. check_content: ['<\/html>'],
  51. decode: 'auto-html',
  52. });
  53.  
  54.  
  55. if(response.success) {
  56. let price = response.data.match(/<meta.*property="product:price:amount".*content="(.*)".*\/>/i);
  57. if(price)
  58. results.price = price[1];
  59. let model = response.data.match(/meta.*itemprop="productId".*content="(.*)".*\/>/i);
  60. if(model)
  61. results.model = model[1];
  62.  
  63.  
  64. }
  65.  
  66. results.success = response.success;
  67.  
  68. return results;
  69.  
  70. this.logger.put('insert');
  71. //this.logger.put(JSON.stringify(charact));
  72. //let ins = await this.insert(results);
  73.  
  74. let ins = yield* this.insert(results);
  75.  
  76. }
  77.  
  78.  
  79. async insert(results){
  80. let model ;
  81. let price ;
  82. let sqlins = `insert into sb_pricelog(id,sid,pprice) values(NULL,'${results.model}','${results.price}')`;
  83. let [charact,fields] = await connection.execute(sqlins);
  84.  
  85.  
  86.  
  87. }
  88.  
  89.  
  90.  
  91.  
  92.  
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement