Здравствуйте, Скажите, возможно ли спарсить данные отсюда: http://suite.searchmetrics.com/en/research/links/backlink-profile/tld-list?url=a-parser.com ? Насколько я понимаю, данные подгружаются через Javascript, т.е. получается что пока нет возможности спарсить через А-парсер, например через Net::HTTP? Если это так планируется ли в будущем поддержка Javascript?
Здравствуйте. Да, вполне можно: Детально метод описан здесь: http://a-parser.com/threads/1699/#post-5129. Если вкратце - то нужно дебаггером отследить запрос и использовать его для получения информации. Информация выдается в JSON, поэтому нужно воспользоваться tools.parseJSON. Спойлер: Код для импорта Код: eyJwcmVzZXQiOiJkZWZhdWx0IiwidmFsdWUiOnsicHJlc2V0IjoiZGVmYXVsdCIs InBhcnNlcnMiOltbIk5ldDo6SFRUUCIsImRlZmF1bHQiLHsidHlwZSI6Im92ZXJy aWRlIiwiaWQiOiJnb29kQ29kZSIsInZhbHVlIjpbMjAwXX0seyJ0eXBlIjoib3Zl cnJpZGUiLCJpZCI6InF1ZXJ5Zm9ybWF0IiwidmFsdWUiOiJodHRwOi8vc3VpdGUu c2VhcmNobWV0cmljcy5jb20vZ3JpZC90b3BsZXZlbGRvbWFpbiJ9LHsidHlwZSI6 Im92ZXJyaWRlIiwiaWQiOiJtZXRob2QiLCJ2YWx1ZSI6IlBPU1QifSx7InR5cGUi OiJvdmVycmlkZSIsImlkIjoiYm9keSIsInZhbHVlIjoiYWN0aW9uPWdyaWQvdG9w bGV2ZWxkb21haW4mbGltaXQ9MTAwJnNvcmQ9ZGVzYyZzaWR4PWxpbmtzJnVybD0k cXVlcnkub3JpZyZvZmZzZXQ9MCZmaWx0ZXI9e30mY29sc1tdPXRvcGxldmVsJmNv bHNbXT1kaWZmZG9tYWlucyZjb2xzW109bGlua3MmY29sc1tdPXBlcmNlbnRhZ2Um Y29sc1tdPWZpbHRlcl90b3BsZXZlbCZkZXBlbmRlbnRfY29sc1t0b3BsZXZlbF09 ZGlmZmRvbWFpbnMmZGVwZW5kZW50X2NvbHNbbGlua3NdPWRpZmZkb21haW5zJmRl cGVuZGVudF9jb2xzW3BlcmNlbnRhZ2VdPWxpbmtzLGRpZmZkb21haW5zJmRhdGF0 aXRsZT1HUklEX1RPUF9MRVZFTF9ET01BSU5TJmNodW5raW5nX2xpbWl0PTEwMCZj aHVua2luZ19vZmZzZXQ9MCZjaHVua2luZ19maWVsZHNbXT10b3BsZXZlbCZjaHVu a2luZ19maWVsZHNbXT1kaWZmZG9tYWlucyZjaHVua2luZ19maWVsZHNbXT1saW5r cyZjaHVua2luZ19maWVsZHNbXT1wZXJjZW50YWdlJmNodW5raW5nX2ZpZWxkc1td PWZpbHRlcl90b3BsZXZlbCZhY2M9MCJ9LHsidHlwZSI6Im92ZXJyaWRlIiwiaWQi OiJmb3JtYXRyZXN1bHQiLCJ2YWx1ZSI6IlslIGpzb24gPSB0b29scy5wYXJzZUpT T04oZGF0YSk7XG5GT1JFQUNIIHIgSU4ganNvbi5yb3dzO1xuXHRyLjAgXyAnOyAn IF8gci4xIF8gJzsgJyBfIHIuMiBfICc7ICcgXyByLjMgXyBcIlxcblwiO1xuRU5E ICVdIn1dXSwicmVzdWx0c0Zvcm1hdCI6IiRwMS5wcmVzZXQiLCJyZXN1bHRzU2F2 ZVRvIjoiZmlsZSIsInJlc3VsdHNGaWxlTmFtZSI6IiRkYXRlZmlsZS5mb3JtYXQo KS50eHQiLCJhZGRpdGlvbmFsRm9ybWF0cyI6W10sInJlc3VsdHNVbmlxdWUiOiJu byIsInF1ZXJ5Rm9ybWF0IjpbIiRxdWVyeSJdLCJ1bmlxdWVRdWVyaWVzIjpmYWxz ZSwic2F2ZUZhaWxlZFF1ZXJpZXMiOmZhbHNlLCJpdGVyYXRvck9wdGlvbnMiOnsi b25BbGxMZXZlbHMiOmZhbHNlLCJxdWVyeUJ1aWxkZXJzQWZ0ZXJJdGVyYXRvciI6 ZmFsc2UsInF1ZXJ5QnVpbGRlcnNPbkFsbExldmVscyI6ZmFsc2V9LCJyZXN1bHRz T3B0aW9ucyI6eyJvdmVyd3JpdGUiOmZhbHNlfSwiZG9Mb2ciOiJubyIsImtlZXBV bmlxdWUiOiJObyIsIm1vcmVPcHRpb25zIjpmYWxzZSwicmVzdWx0c1ByZXBlbmQi OiIiLCJyZXN1bHRzQXBwZW5kIjoiIiwicXVlcnlCdWlsZGVycyI6W10sInJlc3Vs dHNCdWlsZGVycyI6W10sImNvbmZpZ092ZXJyaWRlcyI6W10sInJ1blRhc2tPbkNv bXBsZXRlIjpudWxsLCJ1c2VSZXN1bHRzRmlsZUFzUXVlcmllc0ZpbGUiOmZhbHNl LCJydW5UYXNrT25Db21wbGV0ZUNvbmZpZyI6ImRlZmF1bHQiLCJ0b29sc0pTIjoi In19
а parseJSON это уже встроенное? или надо дописать в tools.js типа такого: Tools.prototype.parseJSON = function(json){ var json_data = JSON.parse(json); return json_data; }
Support, перестал работать парсер searchmetrics.com, который вы предоставили в своем посте, я пробовал разобратся но запутался. Читал инструкцию которую посоветовали, но там разница в том что данные уже есть в коде, а здесь нет: Видимо поменялся код и из-за этого перестало парсится. Пробовал разобрать в чём разница между прошлой версией: Данные из Post Body парсера: action=grid/topleveldomain &limit=100 &sord=desc &sidx=links &url=$query.orig &offset=0 &filter={} &cols[]=toplevel &cols[]=diffdomains &cols[]=links &cols[]=percentage &cols[]=filter_toplevel &dependent_cols[toplevel]=diffdomains &dependent_cols[links]=diffdomains &dependent_cols[percentage]=links,diffdomains &datatitle=GRID_TOP_LEVEL_DOMAINS &chunking_limit=100 &chunking_offset=0 &chunking_fields[]=toplevel &chunking_fields[]=diffdomains &chunking_fields[]=links &chunking_fields[]=percentage &chunking_fields[]=filter_toplevel &acc=0 Нынешние данные: В коде стоит: Код: <script type="text/javascript"> obj_suite_module.addParams({'research.links.tld':{params:{request:{action: 'grid/topleveldomain',limit: Helper.getCookie(Helper.COOKIE_PAGER_LIMIT, 100),sord: 'desc',sidx: 'links'},colorder: [0,1,2,3],cols:[{key:'toplevel',text:'Top-Level Domain',autotruncate:true},{key:'diffdomains',text:'Different Domains',width:190,format:['number'],sortable: 'desc'},{key:'links',text:'Links',width:120,sortable:'desc',type: 'social_distribution',data: [{column: 'links',className: 'backlinks',text: 'Links',show_bar: true,show_value: true,single_bar:true,advanced_filter:{text:2,href:'/research/links/backlinks/advanced-filter?url=[url]&acc=[acc]',title:'Filter backlinks by '#value#'',filter: {id: 'filter_links_advanced_filter',tpl: [[1,'backlinkpage','in',{col:4}]]}}}]},{key:'percentage',text:'in %',width:70,format:['number',2]},{key:'filter_toplevel'}],datatitle: 'GRID_TOP_LEVEL_DOMAINS',header:[{type: 'title',text: 'TLD List',appendix: ' (#from# to #to# of #total_rows#)',help: 'HELP_TABLE_TLD_LIST'},{type: 'panel',items:[{text: 'Export',cls: 'export'},{text: 'Report',cls: 'add x-add'}]}],footer:[{type:'pager'}]}}});obj_suite_module.registerUrlParamsCallback(getFormDataForUrl); obj_suite_module.startupModules(); </script> obj_suite_module.addParams({'research.links.tld':{params:{request:{action: 'grid/topleveldomain', limit: Helper.getCookie(Helper.COOKIE_PAGER_LIMIT, 100), sord: 'desc', sidx: 'links'}, colorder: [0,1,2,3], cols: [{key:'toplevel',text:'Top-Level Domain',autotruncate:true}, {key:'diffdomains',text:'Different Domains',width:190,format:['number'],sortable: 'desc'}, {key:'links',text:'Links',width:120,sortable:'desc',type: 'social_distribution',data: [{column: 'links',className: 'backlinks',text: 'Links',show_bar: true,show_value: true,single_bar:true,advanced_filter:{text:2,href:'/research/links/backlinks/advanced-filter?url=&acc=[acc]',title:'Filter backlinks by '#value#'',filter: {id: 'filter_links_advanced_filter',tpl: [[1,'backlinkpage','in',{col:4}]]}}}]}, {key:'percentage',text:'in %',width:70,format:['number',2]}, {key:'filter_toplevel'}],datatitle: 'GRID_TOP_LEVEL_DOMAINS',header:[{type: 'title',text: 'TLD List',appendix: ' (#from# to #to# of #total_rows#)',help: 'HELP_TABLE_TLD_LIST'},{type: 'panel',items:[{text: 'Export',cls: 'export'},{text: 'Report',cls: 'add x-add'}]}],footer:[{type:'pager'}]}}});obj_suite_module.registerUrlParamsCallback(getFormDataForUrl); obj_suite_module.startupModules(); Начальная часть вроде совпадает, а дальше непонятно. Обясните пожалуйста, в чём может быть дело? И где можно почитать поробнее как нужно дебаггером отследить запрос и составить парсер в таком случае как этот? Может быть есть какие то статьи на форуме? Можете помочь поправить парсер?
Ни там, ни здесь ссылка для запроса не берется из кода. Данные подгружаются AJAX'ом, в дебаггере просто нужно найти урл, по которому они приходят и его использовать. Как пользоваться дебаггером для поиска нужного урла как раз и показано в той статье. Этот же способ использован здесь: https://a-parser.com/threads/1725/ А причина довольно проста: поменялся урл, по которому делается запрос, а именно http на https: