как удалить текст между <сценарием> и </сценарий> использование Python?

Согласно документации FB, каждый элемент в партии считается отдельным вызовом.

В настоящее время мы ограничиваем количество запросов, которые могут быть в пакете, до 50, но каждый вызов в пакете учитывается отдельно для целей расчета лимитов вызовов API и лимитов ресурсов. Например, пакет из 10 вызовов API будет считаться как 10 вызовов, и каждый вызов в пакете вносит одинаковый вклад в ограничение ресурсов ЦП.

Цитируется из: https://developers.facebook.com/docs/reference/api/batch/

Однако у меня нет эмпирических данных.

Дэвид

5
задан RichieHindle 8 June 2009 в 11:34
поделиться

9 ответов

Вы можете использовать BeautifulSoup с этим (и другими) методами:

soup = BeautifulSoup(source.lower())
to_extract = soup.findAll('script')
for item in to_extract:
    item.extract()

Это фактически удаляет узлы из HTML. Если вы хотите оставить пустые теги , вам придется работать с атрибутами item , а не просто извлекать их из супа.

25
ответ дан 18 December 2019 в 05:55
поделиться

Вы пытаетесь предотвратить XSS ? Простое удаление тегов , почему бы просто не удалить весь узел?

Ожидаете ли вы src и body в стиле resig?

0
ответ дан 18 December 2019 в 05:55
поделиться

Если вы не хотите импортировать какие-либо модули:

string = "<script> this is some js. begone! </script>"

string = string.split(' ')

for i, s in enumerate(string):
    if s == '<script>' or s == '</script>' :
        del string[i]

print ' '.join(string)
0
ответ дан 18 December 2019 в 05:55
поделиться

Я недостаточно хорошо знаю Python, чтобы подсказать вам решение. Но если вы хотите использовать это для очистки пользовательского ввода, вы должны быть очень и очень осторожны. Удаление вещей между и просто не улавливает всего. Может быть, вы можете взглянуть на существующие решения (я предполагаю, что Django включает что-то вроде этого).

-1
ответ дан 18 December 2019 в 05:55
поделиться
example_text = "This is some text <script> blah blah blah </script> this is some more text."

import re
myre = re.compile("(^.*)<script>(.*)</script>(.*$)")
result = myre.match(example_text)
result.groups()
  <52> ('This is some text ', ' blah blah blah ', ' this is some more text.')

# Text between <script> .. </script>
result.group(2)
  <56> 'blah blah blah'

# Text outside of <script> .. </script>
result.group(1)+result.group(3)
  <57> 'This is some text  this is some more text.'
-1
ответ дан 18 December 2019 в 05:55
поделиться

Вы можете сделать это с помощью модуля HTMLParser (сложный) или использовать регулярные выражения:

import re
content = "asdf <script> bla </script> end"
x=re.search("<script>.*?</script>", content, re.DOTALL)
span = x.span() # gives (5, 27)

stripped_content = content[:span[0]] + content[span[1]:]

EDIT: re.DOTALL, спасибо tgray

-1
ответ дан 18 December 2019 в 05:55
поделиться

Element Tree - самый простой и удобный пакет для этого. Да, есть и другие способы сделать это; но не используйте «потому что они отстой! (через Марка Пилигрима)

0
ответ дан 18 December 2019 в 05:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: