ファイルのダウンロードなど、Webアクティビティをシミュレートするカスタムシステムを開発しました。このシステムにフィードするカスタムファイル形式もあります。私はperlで書かれたこの古いシステムをpythonの新しいシステムに変更しようとしています。しかし、最初に私はどういうわけかファイルを解析する必要があります。
ファイルには、システムに関する議論がある場所など、解析したい特定のフィールドがあります[settings]
。[macro]
重要なもの(ステップなど)の始まりであるセクションもあります。
私が問題を抱えているのは、これらのセクションを解析して、システムに別のはるかに単純な形式で書き出すことです(これらのファイルは何千もあり、古いファイルを取得して新しい形式で新しい形式に書き込むジェネレーターを作成したいだけです。新しいファイル)。
古い形式:
[settings]
email_to=people
special_websurf_processing=1
period_0_1_only=1
crc_recheck=0
[macro]
%::WebSurfRules =
(
'Step1' =>
{
action => 'NAVIGATE',
inputstring => 'http://www.tda-sgft.com/TdaWeb/jsp/fondos/Fondos.tda',
},
'Step2' =>
{
action => 'CLICK_REFERENCE',
matchtype => 'OUTER',
matchstring => 'phHttpDest->\{\'FirstClick\'\}',
pass => 'phHttpDest->\{\'Step2Pass\'\}',
},
'Step3' =>
{
action => 'CLICK_REFERENCE',
matchtype => 'OUTER',
matchstring => 'phHttpDest->\{\'SecondClick\'\}',
},
'Step4' =>
{
action => 'CLICK_REFERENCE',
matchtype => 'OUTER',
matchstring => 'phHttpDest->\{\'DealClick\'\}',
accept_multi_match => 'ANY_TOP_FIRST',
},
'Step5' =>
{
action => 'CLICK_REFERENCE',
matchtype => 'INNER',
matchstring => 'phHttpDest->\{\'LinkClick2\'\}',
fail => 'Step6',
# accept_multi_match => 'ANY_TOP_LAST',
},
'Step6' =>
{
action => 'CLICK_REFERENCE',
matchtype => 'INNER',
matchstring => 'phHttpDest->\{\'DocClick\'\}',
},
'Step7' =>
{
action => 'CLICK_DOWNLOAD_OK',
},
);
[data]
Print WebAddress______________ Destination_________________________________________________ FirstClick_________________ SecondClick________________ DealClick_________________________ LinkClick2________________________ DocClick___________________________________ PayInterval DueDay Step2Pass__________ QaRule_________________________________________________________________________________________________________________
0 http://www.tda-sgft.com/ d:\\$YYYYMM{$n}\\raw\\remit\\wl\\CXPEN1_apl.pdf Mortgage Loan ABS Caixa Penedes 1 TDA MAINPAGE - FAIL Fund´s Allocation q1 Step3 qa_regexp=Report D?d?ate\\s+\\d\\d\/$MM{$n}\/$YYYY{$n}
0 http://www.tda-sgft.com/ d:\\$YYYYMM{$n}\\raw\\remit\\wl\\CXPEN1_bond.pdf Mortgage Loan ABS Caixa Penedes 1 TDA MAINPAGE - FAIL Investors information on Payment Date q1 Step3 qa_regexp=PAYMENT DATE:\\s+$aCAPMONTHNAMES[$MM{$n}-1].+$YYYY{$n}
0 http://www.tda-sgft.com/ d:\\$YYYYMM{$n}\\raw\\remit\\wl\\CXPEN1_bond.pdf Mortgage Loan ABS Caixa Penedes 1 TDA MAINPAGE - FAIL Investors information on Payment Date q1 Step3 qa_regexp=PAYMENT DATE:\\s+$aCAPSHORTMONTHNAMES[$MM{$n}-1] \\d\\d.+? ?.? $YYYY{$n}
0 http://www.tda-sgft.com/ d:\\$YYYYMM{$n}\\raw\\remit\\wl\\CXPEN1_bond.pdf Mortgage Loan ABS Caixa Penedes 1 TDA MAINPAGE - FAIL Investors information on Payment Date q1 Step3 qa_regexp=PAYMENT DATE:\\s+$aCAPMONTHNAMESSPANISH[$MM{$n}-1] \\d\\d.+? ?.? $YYYY{$n}
そして、私がそれを吐き出したいもの:
[settings]
email_to=people
special_websurf_processing=1
period_0_1_only=1
crc_recheck=0
[macro]
%::WebSurfRules =
(
'1' => 'NAVIGATE,phHttpDest->\{\'WebAddress\'\}',
'2' => 'CLICK_REFERENCE,phHttpDest->\{\'FirstClick\'\}',
'3' => 'CLICK_REFERENCE,phHttpDest->\{\'SecondClick\'\}',
'4' => 'CLICK_REFERENCE,phHttpDest->\{\'DealClick\'\}',
'5' => 'CLICK_REFERENCE,phHttpDest->\{\'LinkClick2\'\}',
'6' => 'CLICK_REFERENCE,phHttpDest->\{\'DocClick\'\}',
);
[data]
Print WebAddress______________ Destination_________________________________________________ FirstClick_________________ SecondClick________________ DealClick_________________________ LinkClick2________________________ DocClick___________________________________ PayInterval DueDay Step2Pass__________ QaRule_________________________________________________________________________________________________________________
0 http://www.tda-sgft.com/ d:\\$YYYYMM{$n}\\raw\\remit\\wl\\CXPEN1_apl.pdf Mortgage Loan ABS Caixa Penedes 1 TDA MAINPAGE - FAIL Fund´s Allocation q1 Step3 qa_regexp=Report D?d?ate\\s+\\d\\d\/$MM{$n}\/$YYYY{$n}
0 http://www.tda-sgft.com/ d:\\$YYYYMM{$n}\\raw\\remit\\wl\\CXPEN1_bond.pdf Mortgage Loan ABS Caixa Penedes 1 TDA MAINPAGE - FAIL Investors information on Payment Date q1 Step3 qa_regexp=PAYMENT DATE:\\s+$aCAPMONTHNAMES[$MM{$n}-1].+$YYYY{$n}
0 http://www.tda-sgft.com/ d:\\$YYYYMM{$n}\\raw\\remit\\wl\\CXPEN1_bond.pdf Mortgage Loan ABS Caixa Penedes 1 TDA MAINPAGE - FAIL Investors information on Payment Date q1 Step3 qa_regexp=PAYMENT DATE:\\s+$aCAPSHORTMONTHNAMES[$MM{$n}-1] \\d\\d.+? ?.? $YYYY{$n}
0 http://www.tda-sgft.com/ d:\\$YYYYMM{$n}\\raw\\remit\\wl\\CXPEN1_bond.pdf Mortgage Loan ABS Caixa Penedes 1 TDA MAINPAGE - FAIL Investors information on Payment Date q1 Step3 qa_regexp=PAYMENT DATE:\\s+$aCAPMONTHNAMESSPANISH[$MM{$n}-1] \\d\\d.+? ?.? $YYYY{$n}
それぞれのクリックでphHttpDestとアクションが、[data]
セクションの見出しに関連付けられます。