Advertisement
Guest User

Untitled

a guest
Jan 24th, 2019
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.95 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.38',
  7. results: {
  8. flat: [
  9. ['title', 'HTML title'],
  10. ]
  11. },
  12. results_format: '$query: $title\\n',
  13. parsecodes: {
  14. 200: 1,
  15. },
  16. max_size: 200 * 1024,
  17. };
  18. }
  19. async init(){
  20. connection = await mysql2.createConnection({
  21. host: '127.0.0.1',
  22. port: '3306',
  23. user: 'workflow',
  24. password: '12312312',
  25. database: 'app'
  26. });
  27. }
  28. async *parse(set, results) {
  29. this.logger.put("Start scraping query: " + set.query);
  30. let ins = yield* this.getAdInfo(set.query, {});
  31.  
  32. return results;
  33. }
  34.  
  35.  
  36. * getAdInfo(set, results) {
  37. let response = yield this.request('GET', set.query, {}, {
  38. //'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',
  39. check_content: ['<\/html>'],
  40. decode: 'auto-html',
  41. });
  42.  
  43. if (response.success) {
  44. results.price = parseInt(this.getPrice(response.data).replace(/\s/g,''));
  45. results.model = parseInt(this.getModel(response.data).replace(/\s/g,''));
  46. this.utils.updateResultsData(results, response.data);
  47. results.success = response.success;
  48. }
  49. return results;
  50. }
  51. getPrice(data){
  52. let price = data.match(/<meta.*property="product:price:amount".*content="(.*)".*\/>/);
  53. let res = price ? price[1] : '0';
  54. if(res == ' '){
  55. return '0';
  56. }
  57. return res;
  58. }
  59.  
  60. getModel(data){
  61. let model = data.match(/<div.*class="col-sm-4 col-xs-4">(.*)".*\<\/div>/);
  62. return res;
  63. }
  64.  
  65.  
  66.  
  67. /*Проверяем есть ли записи в базе и если есть ничего не делаем, если нет то добавляем*/
  68. async CheckDB(key,price){
  69. try {
  70. let sql = `select (sid) from sb_product where model = "${key}"`;
  71. let myl = await connection.query(sql);
  72. if(myl[0].length == 0){
  73. let sql = `insert into sb_product(model) values("${key}")`;
  74. let [row,fields] = await connection.execute(sql);
  75. for(let i = 0 ; i < price.length; i ++){
  76. sql = `insert into sb_pricelog(pprice,sid) values("${price[i]}",${myl['sid']})`;
  77. let [row1,fields1] = await connection.execute(sql);
  78. }
  79. }
  80. else{
  81. this.logger.put('Keyword already exists');
  82. }
  83. } catch(e) {
  84. this.logger.put(JSON.stringify(e));
  85. }
  86. }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement