Найти - Пользователи
Полная версия: помогите пожалуйста с парсингом.
Начало » Центр помощи » помогите пожалуйста с парсингом.
1
ss100s
Есть html такого типа:
<html>
<head>
<body>
var unit = new Array();
unit[0] = '642a6|7af7a569|arr1|543438';
unit[1] = 'f643d|183e97e6|arrnew|423324';
unit[2] = 'da0fa|e004bd72|newarr|423432';
......
unit[n] = 'da0fa|e004bd72|rrrrr|243232';
</body>
</html>
Необходимо собрать значения:
543438,423324,423432,.....,243232
doza_and
a="...."
print(re.findall(r"\|(\d+)';",a))
ss100s
Да, отработало.
А реально загнать
642a6|7af7a569|arr1|543438
f643d|183e97e6|arrnew|423324
da0fa|e004bd72|newarr|423432
......
da0fa|e004bd72|rrrrr|243232
в массив?
doza_and
ss100s
А реально загнать в массив?
Да.

p.s.
:) Это вопрос типа а слабо написать программу за меня? Ну по крайней мере так выглядит.
1. Попробуйте написать самостоятельно. Если что не получится вам поможем. Приведите ваши попытки. Объясните что не так.
2. Ответ на ваш вопрос очевиден, думаю для вас тоже. Желательно более понятно формулировать вопросы.
3. Решение многих задач сильно зависит от контекста. Если у вас высокие требования к надежности разбора . Например недопустимы отказы алгоритма и сложный вид входных данных, то тогда регулярные выражения лучше не использовать, можно взять pyparsing. Для таблиц,чем ваши данные и являются, можно использовать модули csv numpy или pandas и т.п. Что выбрать зависит от того что вы собираетесь потом делать. Если оно обернуто в html на первом этапе можно выкусить данные пакетам предназначенными для парсинга html. например lxml. Но это работает если данных относительно много но не слишком много вцелм.
Ваши данные валидный JS код. Почему бы вам не скинуть из из JS в формате JSON?
r"\(|(\d+))+';"
ss100s
Не понятно как вырезать то, что можно скинуть в JSON.
Пытаюсь получить строки вида
'642a6|7af7a569|arr1|543438'
Таким образом:
print(re.findall(r"unit[\d+](.*?)';",a))
Это не получилось.
py.user.next
Это с числами в квадратных скобках
>>> import re
>>> 
>>> text = """
... <html>
... <head>
... <body>
... var unit = new Array();
... unit[0] = '642a6|7af7a569|arr1|543438';
... unit[1] = 'f643d|183e97e6|arrnew|423324';
... unit[2] = 'da0fa|e004bd72|newarr|423432';
... ......
... unit[n] = 'da0fa|e004bd72|rrrrr|243232';
... </body>
... </html>
... """
>>> 
>>> re.findall(r"unit\[\d+\] = '([^']+)'", text)
['642a6|7af7a569|arr1|543438', 'f643d|183e97e6|arrnew|423324', 'da0fa|e004bd72|newarr|423432']
>>>

Это с переменными в квадратных скобках
>>> import re
>>> 
>>> text = """
... <html>
... <head>
... <body>
... var unit = new Array();
... unit[0] = '642a6|7af7a569|arr1|543438';
... unit[1] = 'f643d|183e97e6|arrnew|423324';
... unit[2] = 'da0fa|e004bd72|newarr|423432';
... ......
... unit[n] = 'da0fa|e004bd72|rrrrr|243232';
... </body>
... </html>
... """
>>> 
>>> re.findall(r"unit\[.+?\] = '([^']+)'", text)
['642a6|7af7a569|arr1|543438', 'f643d|183e97e6|arrnew|423324', 'da0fa|e004bd72|newarr|423432', 'da0fa|e004bd72|rrrrr|243232']
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB