Я использую cURL, чтобы получить веб-страницу и представить ее нашим пользователям.Все работало хорошо, пока я не наткнулся на веб-сайт, использующий значительное количество Ajax, отформатированный так:
33687|updatePanel|ctl00_SiteContentPlaceHolder_FormView1_upnlOTHER_NATL|
<div id="ctl00_SiteContentPlaceHolder_FormView1_othernationalities">
<h4>
<span class="tooltip_text" onmousemove="widetip=false; tip=''; delayToolTip(event,tip,widetip,0,0);return false"
onmouseout="hideToolTip()">
<span id="ctl00_SiteContentPlaceHolder_FormView1_lblProvideOTHER_NATL">Provide the following information:</span></span>
</h4>
|
266|scriptBlock|ScriptContentNoTags|
document.getElementById('ctl00_SiteContentPlaceHolder_FormView1_dtlOTHER_NATL_ctl00_csvOTHER_NATL').dispose = function() {
Array.remove(Page_Validators, document.getElementById('ctl00_SiteContentPlaceHolder_FormView1_dtlOTHER_NATL_ctl00_csvOTHER_NATL'));
}
Итак, каждая часть ответа состоит из 4 частей: 2 и 3 - просто идентификаторы, 4 - реальное«тело», а 1 - длина тела.Проблема в том, что мы модифицируем тело, и мне нужно иметь возможность обновить длину первой части, чтобы указать это;в противном случае мы добавляем ошибку разбора при вставке этого в веб-страницу.
Я пытаюсь выяснить комбинацию команд оболочки (awk, sed, что угодно), чтобы: a) прочитать сохраненный файл b)запустите для этого регулярное выражение, чтобы собрать каждый отдельный блок информации (используя '(\ d *?) \ | (. ?) \ | (. ?) \ | (. *?) \ |') c) сделать первую группу захвата равной длине последней группы захвата d) сохранить все совпадения с регулярным выражением в новом документе или обратно в исходный
Любые входные данные из "коллектива" будут с благодарностью приняты.