BeautifulSoup убивает программу по требованию работы - PullRequest
1 голос
/ 30 апреля 2019

Я разрабатываю скрипт на python (https://github.com/BrunorpPaixao/lmfm4u), который используется для очистки текста, который вы получаете с Facebook, когда вы просите их отправить вам все сообщения, которые вы когда-либо отправляли / получали.

Он отлично работает для большинства файлов, но когда я пытаюсь отсканировать гигантский текстовый файл, через несколько минут после того, как я смотрю на замороженный экран, я получаю сообщение на своем терминале с надписью «убит», я думаю, что проблема возникаетот BeautifulSoup и его способности загружать огромные файлы.

Я хотел бы знать, есть ли способ улучшить мой код, чтобы сократить время «очистки», или я делаю что-то не так с этим способом?В настоящее время я делаю это.

Итак ... когда мы получаем файлы из Facebook, они выглядят так:

</div><div></div><div></div></div></div><div class="_3-94 _2lem">11/12/2017, 21:48</div></div><div class="pam _3-95 _2pi0 _2lej uiBoxWhite noborder"><div class="_3-96 _2pio _2lek _2lel">Francisco Zacarias</div><div class="_3-96 _2let"><div><div></div><div>eles nao deram respwan</div><div></div><div></div></div></div><div class="_3-94 _2lem">11/12/2017, 21:48</div></div><div class="pam _3-95 _2pi0 _2lej uiBoxWhite noborder"><div class="_3-96 _2pio _2lek _2lel">Francisco Zacarias</div><div class="_3-96 _2let"><div><div></div><div>deve ter bugado ent</div><div></div><div></div></div></div><div class="_3-94 _2lem">11/12/2017, 21:48</div></div><div class="pam _3-95 _2pi0 _2lej uiBoxWhite noborder"><div class="_3-96 _2pio _2lek _2lel">Bruno Paixao</div><div class="_3-96 _2let"><div><div></div><div>e usares nos pilares</div><div></div><div></div></div></div><div class="_3-94 _2lem">11/12/2017, 21:44</div></div><div class="pam _3-95 _2pi0 _2lej uiBoxWhite noborder"><div class="_3-96 _2pio _2lek _2lel">Bruno Paixao</div><div class="_3-96 _2let"><div><div></div><div>é so dropares 5</div><div></div><div></div></div></div><div class="_3-94 _2lem">11/12/2017, 21:44</div></div><div class="pam _3-95 _2pi0 _2lej uiBoxWhite noborder"><div class="_3-96 _2pio _2lek _2lel">Bruno Paixao</div><div class="_3-96 _2let"><div><div></div><div>e usas uma em cada pilar</div><div></div><div></div></div></div><div class="_3-94 

Это набор HTML-кода в простой строке, которая затемЯ использую BeautifulSoup, чтобы удалить все теги HTML, затем использую регулярное выражение, чтобы разделить сообщения и, наконец, установить их правильно.

regex = re.compile('\\d{2}/\\d{2}/\\d{4},.\\d{2}:\\d{2}')
CleanStartTime = time.time()
cleaned = BeautifulSoup(document, "lxml").get_text()
cleaned = cleaned.split(" ")
if(len(cleaned) < 290):
    print("Wrong type of file, please choose a facebook messenger history file.")
    quit()
else:
    for i in range(290):
        cleaned.pop(0)
cleaned =  " ".join(cleaned)
cleanedwregex = re.split(regex, cleaned)
listofdates = re.findall(regex, cleaned)
CleanEndTime = time.time()
print("HTML cleaned in " + str("%.2f" % (CleanEndTime - CleanStartTime)) + "seconds")

PrintStartTime = time.time()
gucciString = ""
for i in range(len(cleanedwregex) - 1):
    gucciString += listofdates[i] + " | " + cleanedwregex[i] + "\n"

и, наконец, вывод выглядит следующим образом:

11/12/2017, 21:44 | Bruno Paixaotens de matar os orcs
11/12/2017, 21:44 | Bruno Paixaoai
11/12/2017, 21:31 | Francisco Zacariaso que é que tenho de fazer aqui
11/12/2017, 21:31 | Francisco Zacarias
11/12/2017, 21:31 | Francisco Zacariascaro engenheiro do ips peço desculpa estar a incomodar mas nao sei o que fazer agora

Я надеюсь получитьпомогая с большими файлами «BeautifulSouping», я подумал о том, чтобы проверить общее количество символов (некоторые достигли 58 миллионов символов) и сделать это в битах, добавив в окончательный файл, но прежде чем я попробую это, я хотел бы узнать мнение некоторыхиз вас.

Если вы хотите проверить полный код, нажмите на ссылку GitHub вверху, любая помощь действительно приветствуется!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...