したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

htmltodatサポートスレッド

1</b><font color=#FF0000>(L44UP/ps)</font><b>:2002/11/30(土) 01:48
QA・要望等受け付けるかもしれない(?)スレッドです。
作者にスキルがないのでできないことが多いかとは思います。

591名無しさん:2010/02/14(日) 14:41:29
http://2ch.ac.la/
このサイトの正規表現の記述を教えてください

592名無しさん:2010/02/14(日) 14:42:04
ちなみにほしいログは
ttp://2ch.ac.la/read.php/comic/1189697654/
です

593 ◆/vmukiyuzw:2010/02/15(月) 19:07:30
>>590さん
(SJISに変換するため)UTF-8として正しいコードかチェックしてるんですが
そこのチェックに引っかかっちゃってる状態です。
別の手段でソースを見てみると一部のHTMLコメントがSJISで記述されており
これが引っかかってるようです。

さて、対応としては、読み込めないのはまずいので無理やりでも読み込めるように
しないといけない(不正なコードを何かに置き換える等)と思うのですが
該当部分のプログラムはネットで検索して見つかったものをそのままコピペしたもので
どう修正すればいいのかまだよくわかっていない状態ですので、研究含めて
多少時間がかかってしまうと思います。

お急ぎでしたら、firefoxで該当スレを表示させてソースを表示させると
SJIS変換された状態で表示してくれるので、HTMLソース欄へのコピペ等で
当面対処していただけないでしょうか。

594 ◆/vmukiyuzw:2010/02/15(月) 19:12:02
>>591さん

正規表現
m#<font color="\#0000FF">([0-9]+).+?<b>(.+?)</b></font>(?:&nbsp;\[(.*?)\])?&nbsp;投稿日:(.+?)<div class="plain">(.*?)</div><br />#mik

前処理
s#(<title.*?)@2ch大学: 過去ログ倉庫(</title>)#$1$2#ik
s#<script (.|\n|\r)*?</script>##igk
s#<noscript>(.|\n|\r)*?</noscript>##igk
s#<div style=.+?>\r\n##igk
s#<!-- Rakuten .+?>\r\n##igk
s#<img.*?>##igk
s#<a</a>.*?>##igk
s#<div class="center"><iframe .*?</iframe></div>##igk

変換結果式
$2<>$3<>$4<>$5<>(←メール欄逆転)

本文途中にバナー広告が入り込んじゃってるのを見落としてしまうところでした。
あと、HTML化の際のバグ?なのか、アンカータグがおかしなところがあってこれも
危うく見落としかけました(htmltodatとしてそこまでフォローすべきなのかと
一瞬考えてしまいましたが)。

595名無しさん:2010/02/15(月) 19:38:50
>>594
ありがとうございます

すみませんが
一行が長すぎるせいか、正規表現が正しくないようです
とエラーが出て使えません

お願いします

596 ◆/vmukiyuzw:2010/02/15(月) 20:02:16
あああそうかnbspがコピペの段階で消えてしまうのか

正規表現
m#<font color="\#0000FF">([0-9]+).+?<b>(.+?)</b></font>(?:&nbsp;\[(.*?)\])?&nbsp;投稿日:(.+?)<div class="plain">(.*?)</div><br />#mi

2箇所あるnbsp;の前の&を半角に変えてからやってみてください。

597663 ◆fnwcOWFi56:2010/02/15(月) 20:51:36
>>593
了解しました。
気長にお待ちしております。

598名無しさん:2010/02/15(月) 21:10:01
>>596
ありがとうございました
感謝です

599 ◆/vmukiyuzw:2010/02/16(火) 19:20:39
バージョンアップしました(0.8.17)
 ・文字コードUTF-8のHTMLに不正なUTF-8コードが含まれていた際エラーにしていた
  のをエラーにならないよう修正。

>>593を受けての修正です。
単にエラーチェックを外しただけなのですが
不正なコードはSJIS変換の際に単に「???」と化けるだけで
とりあえず大きな問題ではなさそうなのでこれで済ませることにしました。

600名無しさん:2010/02/16(火) 20:57:15
乙です

601663 ◆fnwcOWFi56:2010/02/17(水) 19:47:49
更新ありがとうございます
読み込めるようになりました。

602 ◆/vmukiyuzw:2010/04/03(土) 03:13:22
>>http://yy14.kakiko.com/test/read.cgi/mirror/1213700846/461

htmltodatでは本文(通常は$5)中のアンカータグ(<a 〜>、</a>)をデフォルトで削除するようにしているのですが
以前、どこかのサイトでメール欄が$2と$3のどちらにもありえるサイトがあり、それに対応しようとすると
$5でなく$6が本文になってしまうため、$6のアンカータグも削除するように今はなっています。
よって最初にお書きになった正規表現の$6のアンカータグが内部的に削除されうまくいかなかったようです。

もう少し経緯を調べてみますが、修正した場合の副作用がまだ不明なので、現時点では$6内のアンカータグは
次のマッチには引き継がれない、ということにさせてください。

603 ◆/vmukiyuzw:2010/04/04(日) 00:26:23
ログを遡っていくと「どこかのサイト」って因縁の(?)にくちゃんねるでした。
v0.4.0のとき(>>209-210あたり参照)に修正したようです。もう5年も前なんですね。

604 ◆/vmukiyuzw:2010/06/20(日) 12:58:11
バージョンアップしました(0.8.18)
 ・文字コード自動判別のロジックを若干見直し。
  文字コードUTF-8のHTMLをSJISと判定してしまう不具合に対応した(つもり)。

ぱっと見は明らかにUTF-8なのに、バイトの範囲と組み合わせをチェックすると
SJISにも当てはまってしまう場合があります。

今までは、「どの文字コードの可能性が最も高いか」判定するために、HTML全文を
「SJIS」「EUC」「UTF-8」それぞれの規則で読んでみて、当てはまる文字の数を調べ
一番多く登場するコードを候補として選択するロジックになっていました。
ただ、文字数で判定すると1文字に3バイト使うUTF-8が若干不利となりSJISと誤判定
される原因となりえます。
そこで、文字数でなくバイト数で判定するよう変更してみました。

605 ◆/vmukiyuzw:2010/07/10(土) 23:53:19
>>http://yy14.kakiko.com/test/read.cgi/mirror/1213700846/575
> それと、htmltodatに限った事ではないかもしれないですが
> 「〜」のUTF-8→Shift_Jis変換がうまくいってないような。

昔Javaやってた頃にこれに悩まされたものです。Delphiでも出るのか・・・
「Shift-Jis」と単に呼ぶ場合と「CP932」と言われるもののの違いに起因する
問題だと思います。(「〜」等はCP932でないと変換できない)

変換の方法として、自分の知る限りでは以下の2通りがあります。

A.Delphiネイティブの機能でUTF-8→SJIS変換する
 (実際には直接の変換はできないので途中Unicodeへの変換を経由する。
 これは関数等は用意されてないのでビット演算で自力で地道に変換する)

B.UTF-8をSJISに変換する関数(内部的にはWindows APIをコールしている)
 を利用する

どうみてもBの方法が簡単そうなのですが、Windows95以前では該当のAPIが
用意されていないということなので、htmltodatではAの方法を使っていました。
が、これはCP932への変換は対応してないようですね。

もう少し調べてみますがBの方法に変更を検討してみます。
Win95で使ってる人とかさすがにいないですよね・・・。

606名無しさん:2010/07/16(金) 05:57:58
http://www.unkar.org/
こちらのサイト用の正規表現を教えていただけないでしょうか?

http://yy14.kakiko.com/test/read.cgi/mirror/1014655362/876
こちらの正規表現を使用したのですが、仕様が変わったのか上手くいきませんでした

dat化したいスレはこれです
http://www.unkar.org/read/academy6.2ch.net/whis/1263893134

よろしくお願いします。

607 ◆/vmukiyuzw:2010/07/16(金) 18:52:31
>>606
もう見られたかもしれませんが 663 ◆fnwcOWFi56 さんがご回答くださっているので
そちらをご参照ください。

http://yy14.kakiko.com/test/read.cgi/mirror/1213700846/581

608名無しさん:2010/07/23(金) 03:18:45
ありがとうございました
無事変換できました

609名無しさん:2010/09/14(火) 20:03:49


610名無しさん:2010/10/15(金) 16:19:02
ご存知かも知れませんが…

インフォシーク iswebライト 終了のお知らせ - インフォシーク ユーザサポートからのお知らせ - 楽天ブログ(Blog)
http://plaza.rakuten.co.jp/usersupport/diary/201008250000/

611 ◆/vmukiyuzw:2010/10/15(金) 20:50:47
>>610さん他
ご心配おかけしていたようで申し訳ありません。
とりあえずお引越ししました。

引越し先:http://mukiyu.g.ribbon.to/

結構やっつけ作業になってしまったので引越し先で何か問題が出るかもしれません。
そのときはここでご連絡ください。

612名無しさん:2010/10/15(金) 23:36:25
>>611
乙です

613 ◆/vmukiyuzw:2010/12/05(日) 01:37:18
>>605
これに関して今日試してみたのですが(←遅い)、うまくいきませんでした。
やっぱり「〜」は「?」に化けてしまいます。

ぐぐって調べてみたのですが(←これも遅い)、思ったより根の深い問題のようで・・・

「CP932」(コードページ932)をプログラム中で指定する方法が何かあるはず、と
たかをくくっていたのですが、検索してみると
「Delphi2009ではストリング型にコードページが指定できるようになりました」
な記事が・・・てことは私が使ってるDel6pesonalでは指定することはできないんじゃね?

・・・

なにか対応策はないのかまだ調べてみますが最悪どうしようもなければ
放置するかもしれません。

614名無しさん:2010/12/28(火) 12:54:45
readme.txtにある$1〜$5は正規表現中のどこを指しているのですか?
いったいどうやって$1〜$5を取得しているのかreadmeを読んでもさっぱり分かりません。

615 ◆/vmukiyuzw:2010/12/28(火) 20:44:50
>>614さん
簡単に言うと、カッコでくくられた部分が順番に$1〜の番号が振られます。
但し、「(?:」で始まるものは番号が振られません。
具体的には、regexps.txtにある「DAT2HTML0.26」を例にとって説明すると

m#<DT>(?:<A.*?>)?([0-9]+).+?(?:<A HREF="mailto:(.+?)">)?<b>(.*?)</B>(?:</A>|</FONT>) ?:(.*?)<DD>(.*)<BR><BR>#mik

・最初のカッコ(?:<A.*?>) → <DT>の直後にある<A 〜>にマッチ。これはグループ化したいためだけのカッコであり、番号を
振りたくないので(?:で始まります
・2番目のカッコ([0-9]+) → その直後にある数字の一回以上の繰り返し(レス番号)にマッチ、これが$1になります
・3番目のカッコ(?:<A HREF="mailto: → これも最初のカッコと同じ理由で(?:なので番号は振られません
・4番目のカッコ(.+?) → カッコが入れ子になってて若干分かりにくいかもしれませんがメール欄にマッチ、これが$2になります
(3番目のカッコの中なので実際には何にもマッチしない場合があるのですがその場合$2は空となります)
・5番目のカッコ(.*?) → <b>と</B>の間にあるので名前欄にマッチ、これが$3になります
・6番目のカッコ(?:</A>|</FONT>) → 名前欄のあとに</A>または</FONT>が来る、ここはメール欄が空かどうかによって
変わってくるのでor表現を使っています。or表現にしたいためだけのカッコなので(?:にして番号を振りません
・7番目のカッコ(.*?) → その後の:の次に投稿日・IDがくるのでそれにマッチ、これが$4になります
・8番目のカッコ(.*) → <DD>と<BR><BR>の間にあるものが本文でそれにマッチ、これが$5になります

うわいざ文章で説明するとなると難しい〜^^;
実際のHTMLと見比べながらだともっと分かりやすいかもしれません。

# 正規表現自体について書き出すとreadme程度では書ききれませんし
# ネット上にいくらでも解説があるので省略したのですが

616 ◆/vmukiyuzw:2010/12/28(火) 22:28:21
補足というか蛇足に近いですけど一つだけ。

5番目のカッコ <b>(.*?)</B> の部分ですが、実は名前欄の中にはトリップ等で細字で表現するため
最後以外に</B>が登場する場合があり、例えば私の名前なんかだと

<b></b> ◆/vmukiyuzw<b></b>

となるんで、.*?の最短一致だと空になっちゃいそうに見えます。
でもそうならないのは、</B>の後ろに(?:</A>|</FONT>)を付けているおかげで、</B></A> または
</B></FONT> の並びになるまでマッチしないという、まあちょっとした小技?です。
他人の書いた正規表現なんてなかなか解読する気にならないでしょうが、参考のひとつになれば。

617名無しさん:2010/12/29(水) 12:53:30
ありがとうございます。やっとなんとか理解できました。
mimizun.comに対応するテキトーな正規表現を書いてみましたので一応載せておきます。

m#<DT>([0-9]+).+?<font.*?><B>(?:<A HREF="mailto:(.+?)">)?(.*?)(?:</a>)?(?:</b></font>):(.*?)<DD>(.*)<BR><BR>#mi

618名無しさん:2011/01/22(土) 09:57:06
unkar.orgにて以下の正規表現を試すのですが、"Sequence (?%c...) not recognized"と出ます。

m#<dt.*?>([0-9]+).*?<span><b>(.*?)</b></span>(?\[(.+?)\])?:(.*?)</dt><dd.*?> (.*?)</dd>#mi

なぜでしょう?

(?\[(.+?)\])?を(\[.+?\])?とすれば問題ないのですが、
できるなら[sage]の括弧を外したいので。

よろしくお願いいたします。

619 ◆/vmukiyuzw:2011/01/22(土) 17:39:28
>>618さん
(?の直後に\がきてるので「そんなシーケンス存在しないよ」と怒られてるのでは?
やりたいのは多分(?:じゃないんでしょうか。

なお、unkar.orgについては>>606-607も参照ください。
有名処の過去ログ保存サイトはたいてい 663 ◆fnwcOWFi56 さんが
自分のサイトで考えてくださっているのでそちらも参照されたほうがいいと思います。
(車輪の再発明になってしまう可能性が高いので)

620名無しさん:2011/04/07(木) 14:11:28
本日、初めてログ速のdat化を試みて
(663 ◆fnwcOWFi56 さんのところで探したけれど、よく分からなかったので)
気づいたことメモっときます。

・DAT2HTML0.26 で変換すると、1レス目を変換した後にエラー吐く。
 ログ速1レス目の直後に挿入されてる広告が引っかかってるらしい。
・2レス目以降のHTMLソースをコピペして DAT2HTML0.26 で変換すると、
 ID前後のHTMLタグが残るだけで、そのほかの部分は問題なく変換される。

自分は拾い損ねたレスだけHTMLソースをコピペ変換して済ませたけど、
前処理で広告スクリプトを削除できれば、
ログ速の変換はなんとかできそうな気がする、と言う報告でした。

621名無しさん:2011/07/20(水) 07:23:26
http://jbbs.livedoor.jp/bbs/read.cgi/radio/14978/1290852881/

このスレのhtmldatのみが上手くいきません(regexps.txtは一通り試しました)
原因は
livedoor レンタル掲示板 開発日誌 : したらば掲示板”投稿不具合についてお知らせ” - livedoor Blog(ブログ)
http://blog.livedoor.jp/bbsnews/archives/51199768.html
にあるとわかっているのですが…
アドバイス・解決策等を教えていただけませんか?

622 ◆/vmukiyuzw:2011/07/20(水) 22:19:46
>>621さん
それってしたらばの生ログをhtml→dat変換したいという話ですかね?
それならしたらばを直接読める専ブラを使えば・・・と思ったのですが
データ破損のせいなのか、したらばのrawmode.cgiの不具合なのか、
全てのレスを読み込めないようですね。
(FireFoxだと1000レスあるがJaneだと765レスまでしか読めない)

とりあえずやってみました。
HTMLの形式自体は素直なものなのですが
頭のほうに例によってガラガラがくっついていて変換の邪魔をしているようなので
これを適当に除いてみます。

変換オプション - 前処理:
#javascriptとstyleシート記述を全部取り除く
s#<script (.|\n)*?</script>##ig
s#<style (.|\n)*?</style>##ig


これを入れると正規表現は既存の「jbbs過去ログ」や「DAT2HTML0.26」等で
変換できるように当方ではなりました。

623名無しさん:2011/07/20(水) 23:20:51
>>622
高速レスありがとうございまう
おかげで無事読み込めました
2010/11/30(火)同日を跨いだしたらばログがいくつか似た状況にあるので応用して使わせて頂きます

624名無しさん:2011/07/22(金) 19:18:29
http://bbs.2ch2.net/admin/readkako.cgi?bbs=visualtanuki&amp;q=1194&amp;q2=1194398043
ここをdat化したいのですがどうやったらできるのですか?

625 ◆/vmukiyuzw:2011/07/22(金) 23:33:08
>>624さん

まず基本的な問題として、デフォルトのhtmltodatでは「403 Forbidden」エラーを食らって
ログ自体を読み込めないみたいですね。
この手の403エラーは大抵User-Agentではねられているケースがほとんどなので
適当に変更します。
htmltodatでUser-Agentを変更するには、ウィンドウの一番上にある「受信オプション」ボタンを
押して「HTTPヘッダの追加」欄に適当なUser-Agentヘッダを入力します。当方の例ですが

User-Agent: Mozilla/5.0

これで読み込めました。


あとはhtml→dat変換の正規表現ですが、htmlの形式自体は素直なのに、意外にもぴったりくる
既存の正規表現はないですね。
「read.cgi7.00?」を基にちょっと書き直してみました。多分書き直し前のものと互換性は保たれていると
思います。

m#<dt.*?>([0-9]+).+?(?:"mailto:(.+?)">)?<b>(.+?)</b>(?:</font>|</a>).*?:(.*?)<dd> ?(.*?)<br><br>(<dt.*?>|</dl>)#mik

626名無しさん:2011/07/24(日) 16:56:29
>>625
ありがとうございます
変換は成功したのですが、専用ブラウザで読み込むことができませんどうやったらできるようになりますか?

627 ◆/vmukiyuzw:2011/07/24(日) 20:07:27
>>626
それはお使いの専用ブラウザの種類によります。
Jane系ならスレ欄にdatファイルをD&Dするだけで取り込めますし
ギコナビのようにログフォルダにdatファイルを入れて再起動でいけるものもあります。
かちゅ〜しゃなんかだと専用のツールが必要になるようです。

628名無しさん:2011/08/03(水) 13:09:35
ログ速をdat化するにはどうすればいいかを教えてください

629 ◆/vmukiyuzw:2011/08/03(水) 20:42:56
>>628さん
ログ速に関しては
>>620さんも考えてくださってるし、663 ◆fnwcOWFi56 さんも自分の掲示板で
いろいろ考えてくださっているのですが、なかなか手ごわいみたいですね。

試しに適当なスレで663 ◆fnwcOWFi56 さんが考えてくださった正規表現を
試してみたのですが変換できませんでした。てことはhtmlの形式が一通りでなく
何パターンかあるのかもしれません。となると対応は一層困難になります。

現時点では私の手には追いかねるって感じですかね。時間がとれれば何とかなるかもしれませんが。
すでに取り組んだ人の成果を基に自力でなんとか頑張ってくださいとしか言えないです。

630名無しさん:2011/08/04(木) 02:28:10
>>629
ありがとうございます

631名無しさん:2011/08/05(金) 17:00:19
テレビジンのdat化の方法誰か知っている方いませんか?知っていれば教えてください

632 ◆/vmukiyuzw:2011/08/05(金) 20:50:19
>>631さん
663 ◆fnwcOWFi56 さんが以前に考えてくださっているようです。
http://yy14.kakiko.com/test/read.cgi/mirror/1213700846/326

633名無しさん:2011/08/17(水) 04:28:16
いつもお世話になっています
これをDAT化させることはできるでしょうか?
http://www.dotup.org/uploda/www.dotup.org1912892.txt.html

634 ◆/vmukiyuzw:2011/08/17(水) 20:37:28
>>633さん
ログからのリンク先を見てみると、過去ログ保管サイトというタイプのものではなく
ログ収集ツールのようなものみたいですね。

このログについてはたった3レスしかないのでhtmltodat使うよりもエディタでdat作ったほうが
早いような気がするのですが、一応考えてみました。ただサンプルが少なすぎるので
他のログについても適用可能かどうかはわかりません。

前処理:
# スレタイが普通とは違う形式で表現されているので修正
s#\t\t\t<input type="hidden" name="suretai" value="(.*?)">#<title>$1</title>#i
# ガラガラ除去
s#\t.*?(\r\n)##ig
# 日付とIDの間に邪魔なものがあるので取り除いておく
s#</span><a href="" onMouseover="javascript:w_res\('<b',.+?\);" onClick="javascript:ID_menu\('<b',.+?\); return false;" id=".+?">(ID:)</a><span id=".+?">(.*?</span>)#$1$2#ig

変換結果式:
$2<>$3<>$4<>$5<>
(↑メール欄逆転)

正規表現:
m#<a name=.+?><a href=.+?>([0-9]+).+?<span class="na".+?>(.*?)</span>\[<span id=.+?>(.*?)</span>\]<span id=.+?>.*?:(.*?)</span><div class="bo".+?>(.*?)</div>#mik

635名無しさん:2011/08/17(水) 21:20:11
>>634
他のもすべて同じ形なので無事変換できました
ありがとうございます

636 ◆/vmukiyuzw:2011/08/18(木) 20:51:03
よく見てみたら気づいたのですが>>634の正規表現だと
トリップを囲むspanタグが取り除けてないですね。
まあ専ブラでの表示にはおそらく支障は出ないでしょうし
他のパターンでどうなるかサンプルが少なくてわからないので
当面これでよしとしますか。

637635:2011/08/19(金) 02:58:09
巡回ツールで自動作成されたものなのでレスの部分を除いてすべて同じ形でした
支障がないようなのであればこのままこれを使わせていただきます

638名無しさん:2011/08/25(木) 19:18:10
>>632
この方法でやってみたのですが、失敗しました

639名無しさん:2011/08/25(木) 19:29:45
>>638をもっと詳しく書きますと、
>>632の通りに変換すると、「1行が長すぎるか、正規表現が正しくないようです」というメッセージが出て、変換できません

640 ◆/vmukiyuzw:2011/08/26(金) 21:40:50
>>638さん
もう2年くらい前に考えられたものですしそこから形式が変わったのかもしれませんね。
htmlになっているものだとうまくいくようですがそうでないものはすでにログが消えててアクセスできません。

私はそこのサイトに詳しくないので通常のログ?にたどり着く方法がよくわかりません。
サンプルのURLをいくつか教えていただけるとなんとかできるかもしれません。

641名無しさん:2011/08/27(土) 20:42:49
>>640
http://tvz.in/thread/ntv/1287017888/

642 ◆/vmukiyuzw:2011/08/28(日) 00:48:49
>>641
見てみましたが現在のhtmltodatでdat化するのはかなり難しそうですね。

htmlの形式自体はシンプルなので適用する正規表現を書くのは全然難しくなさそうなのですが
問題なのはレスアンカーしてるレスがレスアンカー元のレスの直後に並べ替えられていること。
(レス47の直後に129,167が来てる等)
これを単にdat変換しても本来のレス番と全然違うものになってしまいレス番ポップアップとかが
全く意味のないものになってしまいます。
それを正しく並べ替えるような機能は今のhtmltodatにはありません。

EXCELとか使える方なら何とかできる可能性はありますがそうでなければ自力で
変換前か後に自力で並べ替えるしかないと思います。

643 ◆/vmukiyuzw:2011/08/28(日) 00:55:54
基本的に、一つのレスを一行のdatに変換することが基本機能なので
レスの順番を変えられても対応できないってことです。
あぼーんでレス番が飛ぶケースには一応対応したんですが逆転まではちょっと。

644名無しさん:2011/08/28(日) 02:25:17
>>642
>>643
ありがとうございます

645名無しさん:2011/08/28(日) 02:28:29
http://2chnull.info/r/liventv/1287017888/1-1001
このような場合も変換できません
http://yy14.kakiko.com/test/read.cgi/mirror/1213700846/441
の通りにやってみたのですが、うまくいきません

646 ◆/vmukiyuzw:2011/08/28(日) 19:58:01
>>645さん
ログの形式が微妙に変更されてるようですね。
> http://yy14.kakiko.com/test/read.cgi/mirror/1213700846/441
を基にちょっと修正してみました。

前処理:
s#<title.+?/title>##ik
# タイトルの表現形式が以下のように変更されている
s#<h1 id="title">(.+?)(\n|<a )#<title>$1</title>#ik
# 2ch外のサイトへのリンクが消えてしまう副作用があったため下のものに変更
#s#<a.+?>(h?ttp://\w+?\.(?:2ch\.net|bbspink\.com)/test/read.cgi/\w+?/\d+/?)</a> \[<a href=".+?">cache</a>\]#$1#igk
s#\[<a .+?>cache</a>\]##igk
# 「駄レス!」「良レス!」のマークを削除
s#<img src.+?>##igk
# トリップ等細字になるべき部分を補正
s#<strong>#</b>#igk
s#</strong>#<b>#igk

正規表現:
m#<dt>([0-9]+):<em>(?:<b>)?(?:<a href='javascript:alert\("(.*?)"\);'.*?>)?(.+?)(?:</a>)?(?:</b>)?</em>:(.+?)</dt><dd>(.+?)</dd>#mik

647 ◆/vmukiyuzw:2011/08/28(日) 20:59:37
> s#<title.+?/title>##ik
> # タイトルの表現形式が以下のように変更されている
> s#<h1 id="title">(.+?)(\n|<a )#<title>$1</title>#ik

についてちょっと補足。

htmltodatでは、<title>と</title>タグで囲まれてる中をスレタイとして認識する仕様ですが、
このサイトのログの場合、<title>タグの中にスレタイとは別の記述がされており
他の部分に <h1 id="title">スレタイ<a 〜 みたいな形式でスレタイが表現されているので
(こういう過去ログ保存サイトではしばしば見かけられることです)、
まず1行目でスレタイが書かれてない偽の?<title>タグを削除してしまい
3行目で実際のスレタイが書かれてる部分を<title>タグの形に変換してしまうことにより
スレタイと認識させているわけです。
前処理では割と良く使われる方法なので参考になれば。

648 ◆/vmukiyuzw:2011/09/27(火) 22:42:30
http://yy14.kakiko.com/test/read.cgi/mirror/1213700846/734
> あとここってURL見たらわかるように
> レス番が逆転表示されとりますがな
> htmltodatでこういうケースにも対応して頂けたら嬉しいです(私が)

このスレでも少し話が出てたので若干。(>>642)

htmltodat単独では現状無理ですし、今後また別のパターンが出てきたりして
いちいち対応する羽目になるのはいやなので手出しする気が起きないのですが
例えば 変換オプション - 変換結果式 で

$1<>$3<>$2<>$4<>$5

とかしてやると

1<>名無しさん<><>2001/02/09(金) 22:49<>〜

みたいにレス番付きでdat化できます。
レス番があれば並べ替えはいろんな方法で可能ですからお好みの方法で
ゴニョゴニョしていただければいいのではないかと。

自分なら
・上の方法で作ったdatをエディタで読ませる
・<>をタブ文字に変換
・EXCELに貼り付け、レス番でソート
・レス番の列を削除
・エディタに貼り戻し、タブ文字を<>に再変換して保存

まあわざわざEXCEL通さなくてもdat形式のままでソートできるツールも
探せばありそうですけどね。

649 ◆/vmukiyuzw:2011/09/28(水) 19:32:31
>>648
また検証もせずに適当なことを書いてしまった・・・

> 自分なら
> ・上の方法で作ったdatをエディタで読ませる
> ・<>をタブ文字に変換
> ・EXCELに貼り付け、レス番でソート
> ・レス番の列を削除
> ・エディタに貼り戻し、タブ文字を<>に再変換して保存

上の手順ですが、EXCELのバージョンにもよるかもしれないですが
1セルに256文字以上1024文字以下の文字を入力すると
"#####〜"と化けてしまうようなのです。
http://support.microsoft.com/kb/410234/ja
数式バーには正しい値が表示されるので見かけだけの問題かと思ったのですが
全体をコピーしてエディタに貼り付けると"#####〜"のままコピーされてしまい
まずいことになります。

若干面倒ですがEXCELVBA使ってセルの内容をdatの形式に結合し
1行ずつテキストファイルに出力する方法のほうが良さそうです。

650 ◆/vmukiyuzw:2011/10/01(土) 23:27:31
しかしまあ単に文字列順でソートするのではダメで、第1フィールドを数値と認識して
ソートしないといけないんで単純にはいきませんね。

どのみちソート後に第一フィールドは切り捨てないと正常な形式のdatにはならないんで
数値ソートの出来るテキストエディタがあれば後処理も含め楽なんでしょうけど、ちょっと
検索したくらいでは見つからないですね。
(秀丸のマクロで数値ソートが出来るものがあったんですが遅すぎてイマイチでした)

コマンドベースのものならいろいろあるんですけどね。
windows標準のsortコマンドは文字列順しかできないのでダメですが、unix系の
sortコマンドならOKですし、他にも例えば
http://www.vector.co.jp/download/file/winnt/util/fh428840.html
とかフィールドを認識してかつ数値ソートができるので良さそうです。
第1フィールドを切り飛ばすのはsedあたりにつないでもらうとして。
s/^[0-9]+?<>//

651名無しさん:2011/11/08(火) 20:38:15
http://logsoku.com/thread/yuzuru.2ch.net/mj/1279288588/
変換方法を参考にdat化を試みたのですが、旨くいきませんでした。

正規表現や前後処理などどのようにすれば宜しいのでしょうか?
教えていただければ幸いです。
お願いいたします。

652 ◆/vmukiyuzw:2011/11/09(水) 20:35:32
>>651さん
logsoku.comについては663 ◆fnwcOWFi56 さんも以前自分の掲示板で考えてくださっているようですが
その時点からログの形式がかなり変更されているようです。
とりあえず考えてみました。

前処理:
# ガラガラを適当に除去
s#<span .*?</span>##igk
s#<script .*?</script>##igk
# ニュー速等のアイコンを2ch形式に補正(663さんのものをアレンジ)
s#<img src="http://cdn.logsoku.com/(img.2ch.net/ico/.+?)&quot;&gt;#sssp://$1#igk
# 「〜回発言」を取り除く(663さんのものをアレンジ)
s#(ID:)<a href=.+?>(.+?)</a>(.*?)\[\d+.+?\]#$1$2$3#igk

正規表現:
m#<a name="(\d+)"></a>\s*(?:<a href="mailto:(.+?)">|<font color=green>)<b>(.+?)</b>(?:</a>|</font>)\s*:\s*(.*?)\s*</dt>\s*<dd>\s*(.*?)\s*<br />\s<br />.*?</dd>#mik


htmlが変に加工されてスペースやタブがやたら挿入されているので\sを多用しています。

653 ◆/vmukiyuzw:2011/11/09(水) 20:43:23
>>652
ちょっと間違えた(あまり影響は無いと思いますが)

# ガラガラを適当に除去
s#<span .*?</span>##igk
s#<script .*?</script>##igk

# ガラガラを適当に除去
s#<span (.|\n)*?</span>##igk
s#<script (.|\n)*?</script>##igk

654651:2011/11/10(木) 22:13:24
◆/vmukiyuzwさん、教えていただきありがとうございます。
そして、御礼が遅くなりまして申し訳ありません。

無事に補完することが出来ました。
自分はどうもオリジナルでパラメータを組むのが不得意で...OTL

また困った時に、お力添えいただければ幸いです。

655名無しさん:2012/01/23(月) 13:59:47
http://yy14.kakiko.com/test/read.cgi/mirror/1213700846/769-773
で誘導先が違うようなのでこちらに来ました。

その83なんですが
http://yy14.kakiko.com/test/read.cgi/mirror/1213700846/769
の通りやっても「全然ヒットしないので正規表現が正しくないようです」
で変換できません。
htmltodat0.8.18を使わせて頂いております。

656 ◆/vmukiyuzw:2012/01/23(月) 21:04:40
>>655さん
http://yy14.kakiko.com/test/read.cgi/mirror/1213700846/769
の回答でほぼ正解だと思うのですが、ガラガラ除去がちょっと足りなくてエラーになってるようです。
前処理の最後に以下を付け加えてみてください。

s#<tr>.*?</tr>\n##igk

それから、変換後のメール欄にゴミが入ってしまうようなので、正規表現は以下のほうが良いと思います。
(1ヶ所半角スペースを足しただけですが)

m#<dt.+?><a name=".+?"></a>([0-9]+) <span>(.+?)</span> (.*?)((?:\d{2}|\d{4})/\d+/.+?)?</dt><dd.*?>(.+?)</dd>#mik

あと、元のレス(485-487)には書かれていて769では書き漏れされてるようですが

変換結果式
$2<>$3<>$4<>$5<> (←メール欄逆転)

も必要ですね。

# ただ自分が見た限りではもともと2ch上ではメール欄が入ってるレスでも
# そのサイトに持ってきた時点でメール欄は消滅してしまうようです
# それならメール欄逆転とか使わない他の方法も考えられますが、元のアイデアを尊重しておきます

657655:2012/01/23(月) 23:25:46
変換できました。

>>656さん 本当にありがとう。<(_ _)>

658657:2012/01/28(土) 20:46:17
>>657ではお世話になりました。<(_ _)>

また、その83なのですが、http://4ch.viewerd.com/hgame2/1326818225
「1行が長すぎるか、正規表現が正しくないようです」がでました。
1001まで変換はされているのですが、JANEで読むと、1001が
1001 名前:ここ壊れてます[] 投稿日:
になります。

htmltodatの正規表現の表示レスを1〜1001 にすると「1行が長すぎるか〜
は出ませんがやはり 1001 名前:ここ壊れてます[] 投稿日:
になります。
修正可能でしたらよろしくお願いします。

659 ◆/vmukiyuzw:2012/01/28(土) 22:41:40
>>658さん
まず、「1行が長すぎるか、〜」のエラーが出るのは、スレ内容の前だけではなく後ろにも
ガラガラが多くて、1001までの変換は完了しているのにその後も残りのHTMLの変換を試みて
エラーになっちゃうようです。珍しいケースですがありえない話ではないですね。
変換自体は成功しているのでこのエラーは無視してもいいと思いますが、気になるようなら前処理に

s#<div class=.*?</div>\n##igk

とでも足せば消えると思います。(この辺はまあ適宜に)

あと1001が「ここ壊れてます」になるのは、そもそも元の正規表現が1001の形式にうまく対応できて
いないようです。>>655-656で挙げられたスレでも発生しているのでは?

ちょっと泥縄的対応ですが

m#<dt.+?><a name=".+?"></a>([0-9]+) <span>(.+?)</span> (.*?)((?:(?:\d{2}|\d{4})/\d+/)?.+?)</dt><dd.*?>(.+?)</dd>#mik

もしくはいっそ、現状(メール欄が存在していない)に合わせて無駄な部分を取っ払って

m#<dt.+?><a name=".+?"></a>([0-9]+) <span>(.+?)</span> ()(.*?)</dt><dd.*?>(.+?)</dd>#mik

とかでも多分問題ないと思います。

660658:2012/01/29(日) 15:16:54
「ここ壊れてます」出なくなりました。
◆/vmukiyuzwさん、本当にありがとう。<(_ _)>
ありがとう。<(_ _)>

661名無しさん:2012/02/02(木) 14:16:11
度々お世話になってます。

http://logsoku.com/thread/toki.2ch.net/kaden/1306858024/

その56なのですが、「全然ヒットしないので正規表現が正しくないようです」
で変換できません。

それと、その115で結構ログ見つかるのですが、dat化が載っておらず
dat化できません。

よろしければ教えてくださいませ。

662 ◆/vmukiyuzw:2012/02/02(木) 21:48:42
>>661さん
まず「その56」、というかlogsokuについては以前も質問が来てます。
>>652-653でどうでしょう。

ただ、>>659と同様の現象で、後ガラガラのせいで変換は成功するのに
「1行が長すぎるか、〜」のエラーが出ちゃうようです。気になるようなら
前処理に

s#<tr (.|\n)*?</tr>##igk

とでも足してください。

663 ◆/vmukiyuzw:2012/02/02(木) 21:50:55
>>662続き
次に「その115」ですが、こういう場合できれば具体的なURLを書いて欲しいです。
(でないと「その○○」にログが存在するスレをこちらで探さないといけなくなるので)

まあ今回は
http://logsoku.com/thread/toki.2ch.net/kaden/1306858024/
に該当するログ
http://viva2ch.net/kaden/1306858024.html
が存在していましたので、これを調べてみました。

それから「その115」に関しては663さんの掲示板を見ても変換機に追加した経緯とかの
記述が見つからないようですね。ここで私が回答していいものかもわかりませんけど
質問された以上は考えてみました。

正規表現:
m#<a name="(\d+)">\d+</a><i>(.+?) \[(.*?)\]</i><span>(.+?) ?</span><p> (.*?) </p>#mik

前処理:
# 後ガラガラ除去(amazonを直接指定するのはイマイチだが・・・)
s#<li><a href.*?</li>##igk
s#<a href="http://www.amazon.*?</a>##igk
s#<img .*?>##igk
# これは不要かもしれないがブラウザによってはうまく動かない可能性があるので念のため
s#<br />#<br>#igk

変換結果式:
$2<>$3<>$4<>$5<> (←メール欄逆転)

664 ◆/vmukiyuzw:2012/02/02(木) 22:33:51
>>663
s#<a href="http://www.amazon.*?</a>##igk

これはさすがにあまりにヒドいので(あんまりないでしょうけどスレ内のリンクにヒットする
可能性がある)、以下に差し替えてください。

s#<a href="http://www\.amazon.*? title=.*?</a>##igk

665661:2012/02/03(金) 02:35:09
◆/vmukiyuzwさん、ありがとうございます。
JANEの設定ファイルが壊れてしまい、復旧中のため違うスレでやってみました。
(urlの件は失礼しました)

AviUtl総合スレッド71
2ch    http://anago.2ch.net/test/read.cgi/software/1321370210/
その56  http://logsoku.com/thread/anago.2ch.net/software/1321370210/
その115:http://viva2ch.net/software/1321370210.html

その56は改行が正しく変換されないようです。
その115は「fatal error」が出て変換されません。
エラーメッセージを閉じ、変換開始をしますとhtmltodatが落ちてしまいました。

666 ◆/vmukiyuzw:2012/02/03(金) 19:36:07
>>665さん

> その56は改行が正しく変換されないようです。

専ブラが<br/>タグでの改行に対応していないと思われます。
>>663で<br />については言及していたのですが<br/>は見落としてました)
前処理で一括で変更してやればよいでしょう。

s#<br/>#<br>#igk


> その115は「fatal error」が出て変換されません。

>>663でサンプルにしたのはIDのないスレで、IDのあるスレだとうまくいかないです。
(IDの前後に<em></em>タグが付加されているため)
対処法はいろいろ考えられますがとりあえず単純には、前処理に以下を追加

s#</span>##igk
s#<em># #igk
s#</em>##igk

で正規表現はちょっと変更

m#<a name="(\d+)">\d+</a><i>(.+?) \[(.*?)\]</i><span>(.+?) ?<p> (.*?) </p>#mik

これでIDの有無に関わらず変換できると思います。

667665:2012/02/04(土) 00:33:12
◆/vmukiyuzwさん、その56、その115共に変換できました。
ありがとうございました。<(_ _)>

668名無しさん:2012/02/26(日) 17:43:25
その152(bbspink板のみ):ttp://adult-bbs.com/kilauea/hgame2/read/1324447162/
のdat変換教えてくださいませ。

669 ◆/vmukiyuzw:2012/02/26(日) 21:49:18
>>668さん
HTMLの形式はシンプルだしガラガラもほとんどないので悩むとこはなかったです。

正規表現:
m#<p>(\d+?) :()<strong>(.*?)</strong> (.+?)</p>\s*(.*?)\s*<hr />#mi

前処理:
# スレタイ補正
s#(<title>.*?) - アダルト無料掲示板(</title>)#$1$2#ik


しかし、名前欄の太字細字の区別とか、メール欄とかに頓着しないサイトが増えてるのかな?
正規表現書くときには簡単になるんでありがたいですが。

670名無しさん:2012/02/27(月) 00:44:05
dat化できました。
◆/vmukiyuzwさん、いつもありがとう。<(_ _)>

671名無しさん:2012/03/11(日) 08:51:03
>>652-653>>662を見た上で、logsoku.comの前処理&正規表現をもう一度まとめ直していただけませんか?
よくわかりません(前処理・正規表現・後処理の使い方、datへの変換方法等のhtmltodatの基礎知識はわかります)
身勝手な依頼ですがお願いできないでしょうか?

672 ◆/vmukiyuzw:2012/03/11(日) 15:12:48
>>671さん

> >>652-653>>662を見た上で

これに加え>>666も考慮しておく必要がありますね。

まあ要は最初書いたもの(>>652)に前処理を一部差し替え&追加していってるだけなんですけどね。


前処理:
# ガラガラを適当に除去
s#<span (.|\n)*?</span>##igk
s#<script (.|\n)*?</script>##igk
# ニュー速等のアイコンを2ch形式に補正(663さんのものをアレンジ)
s#<img src="http://cdn.logsoku.com/(img.2ch.net/ico/.+?)&quot;&gt;#sssp://$1#igk
# 「〜回発言」を取り除く(663さんのものをアレンジ)
s#(ID:)<a href=.+?>(.+?)</a>(.*?)\[\d+.+?\]#$1$2$3#igk
# 後ろガラガラの除去
s#<tr (.|\n)*?</tr>##igk
# <br/>タグに対応してない専ブラへの対応
s#<br/>#<br>#igk

正規表現:
m#<a name="(\d+)"></a>\s*(?:<a href="mailto:(.+?)">|<font color=green>)<b>(.+?)</b>(?:</a>|</font>)\s*:\s*(.*?)\s*</dt>\s*<dd>\s*(.*?)\s*<br />\s<br />.*?</dd>#mik

673名無しさん:2012/03/11(日) 21:09:27
>>672
◆/vmukiyuzwさんありがとうございました!
logsoku.comは頻繁に見かけるので助かります!

674名無しさん:2012/03/12(月) 18:30:52
>>673ですがギブです
以下が上手く変換できません
◆/vmukiyuzwさんの所では変換できてますでしょうか?(最初からURL貼れば良かった…後悔)

http://logsoku.com/thread/hayabusa.2ch.net/news4vip/1331380426/

675 ◆/vmukiyuzw:2012/03/12(月) 19:49:06
>>674
試してみましたがこちらでは問題なく変換できます。

「上手く変換できません」というのは何かエラーが出るのですか?
それとも変換結果が専ブラでちゃんと読めないとかの不正な状態ですか?
他のスレ(できれば別の板のログがいいんですが)でも同じ状況でしょうか?

676名無しさん:2012/03/12(月) 20:29:55
エラーですね
unmatched () in regexp.
というエラーメッセージが出ます
[一括変換(B)][subject.txt作成(T)]の上は「前処理...」と表示されています
dat変換自体が上手く行われてない模様です

http://logsoku.com/thread/」でググったスレをいくつか変換したのですがどれも結果は上記と同じです
http://logsoku.com/thread/hayabusa.2ch.net/livejupiter/1330100297/
http://logsoku.com/thread/hibari.2ch.net/news4vip/1311095829/
http://logsoku.com/thread/hatsukari.2ch.net/news/1305543291/
http://logsoku.com/thread/raicho.2ch.net/newsplus/1306742633/

677名無しさん:2012/03/12(月) 20:35:42
>>675
自分のファイルをまとめました
おかしな点はありますか?
http://www.dotup.org/uploda/www.dotup.org2738708.zip.html
DLパス「htmldat」です to入れ忘れました^^;

678 ◆/vmukiyuzw:2012/03/12(月) 20:39:46
>>676

> unmatched () in regexp.

ていうのは正規表現の文法エラーですよ。
>>672で書いたものを正しくコピーして貼り付けたのなら起き得ないはず。
もう一度そこからやり直してみてください。

679 ◆/vmukiyuzw:2012/03/12(月) 20:54:22
>>677
お使いの専ブラは何ですか?

前処理中の

# ニュー速等のアイコンを2ch形式に補正(663さんのものをアレンジ)
s#<img src="http://cdn.logsoku.com/(img.2ch.net/ico/.+?)&quot;&gt;#sssp://$1#igk

s#<img src="http://cdn.logsoku.com/%28img.2ch.net/ico/.+?)&quot;&gt;#sssp://$1#igk

に、半角カッコが%28にエンコードされちゃってますね。これがエラーの原因です。
専ブラでなくIEとかでこのスレを表示してコピーしてみたら上手くいくかもしれません。

680名無しさん:2012/03/12(月) 21:12:41
>>679
まず結果から「変換成功」です!
長々お付き合い下さり◆/vmukiyuzwさん本当にありがとうございました

ずっと>>678見てからおかしいなぁ?と思いながら何度も試してました
専ブラは、確固とした意志を持った上での「Jane Doe Style Version 2.78 (2.7.8.0)」です
いやーまさかURLエンコードされてたとは…\(^o^)/
こりゃいつまで経っても変換できない訳だわ

多分ReplaceStr.txtの(恐らく自分で設定した)
//▽URL内の"("")"をエンコードしてURL化する
<rx2>(tp://[\w%&\--/=]*)\(([\w%&\--/=]) $1%28$2 msg
<rx2>(tp://[\w%&\--/=]*)\)([\w%&\--/=]) $1%29$2 msg
が原因っぽいのかな?かな?

681 ◆/vmukiyuzw:2012/03/12(月) 21:23:15
>>680
なるほどそういうことでしたか。
専ブラの種類によってはこういうエンコードしちゃうものがあるのかと思って
正規表現書く際には考慮しないといけないのかと一瞬思ってしまいました。
ReplaceStrですか〜そこまでは考えなかったです。

682名無しさん:2012/03/20(火) 02:33:42
その27をhtmltodatで変換すると変換警告が出るのですがどうしたらいいでしょうか?
http://yy14.kakiko.com/test/read.cgi/mirror/1158402994/756n
の正規表現と変換結果式を設定して変換ボタンを押すと

変換警告
レス 15-17 の間が飛んでいます
レス 30-32 の間が飛んでいます
レス 45-47 の間が飛んでいます
レス 60-62 の間が飛んでいます
レス 75-77 の間が飛んでいます
レス 90-92 の間が飛んでいます
レス 105-107 の間が飛んでいます
レス 120-122 の間が飛んでいます
レス 135-137 の間が飛んでいます
レス 150-152 の間が飛んでいます
レス 165-167 の間が飛んでいます
レス 180-182 の間が飛んでいます
レス 195-197 の間が飛んでいます
レス 210-212 の間が飛んでいます
レス 225-227 の間が飛んでいます
レス 240-242 の間が飛んでいます
レス 255-257 の間が飛んでいます
レス 270-272 の間が飛んでいます
レス 285-287 の間が飛んでいます
レス 300-302 の間が飛んでいます
レス 315-317 の間が飛んでいます
レス 330-332 の間が飛んでいます
レス 345-347 の間が飛んでいます
レス 360-362 の間が飛んでいます
レス 375-377 の間が飛んでいます
レス 390-392 の間が飛んでいます
レス 405-407 の間が飛んでいます
レス 420-422 の間が飛んでいます
レス 435-437 の間が飛んでいます
レス 450-452 の間が飛んでいます
レス 465-467 の間が飛んでいます
レス 480-482 の間が飛んでいます
レス 495-497 の間が飛んでいます
レス 510-512 の間が飛んでいます
レス 525-527 の間が飛んでいます
レス 540-542 の間が飛んでいます
レス 555-557 の間が飛んでいます
レス 570-572 の間が飛んでいます
レス 585-587 の間が飛んでいます
レス 600-602 の間が飛んでいます
レス 615-617 の間が飛んでいます
レス 630-632 の間が飛んでいます
レス 645-647 の間が飛んでいます
レス 660-662 の間が飛んでいます
レス 675-677 の間が飛んでいます
レス 690-692 の間が飛んでいます
レス 705-707 の間が飛んでいます
レス 720-722 の間が飛んでいます
レス 735-737 の間が飛んでいます
レス 750-752 の間が飛んでいます
レス 765-767 の間が飛んでいます
レス 780-782 の間が飛んでいます
レス 795-797 の間が飛んでいます
レス 810-812 の間が飛んでいます
レス 825-827 の間が飛んでいます
レス 840-842 の間が飛んでいます
レス 855-857 の間が飛んでいます
レス 870-872 の間が飛んでいます
レス 885-887 の間が飛んでいます
レス 900-902 の間が飛んでいます
レス 915-917 の間が飛んでいます
レス 930-932 の間が飛んでいます
レス 945-947 の間が飛んでいます
レス 960-962 の間が飛んでいます
レス 975-977 の間が飛んでいます
レス 990-992 の間が飛んでいます

と言った感じになります。
変換したURLはhttp://yomi.mobi/read.cgi/awabi/awabi_tvd_1331986300/です。

683 ◆/vmukiyuzw:2012/03/20(火) 16:33:15
>>682さん
該当のスレをブラウザで表示して「〜の間が飛んでいます」の番号と見比べるとわかるのですが
15レスごとにレスとレスの間にバナー広告が挟まれてますね。
これが邪魔をしてその直後のレスに正規表現がマッチしなくなったという状況のようです。

対処としては、前処理を使ってバナー広告の部分(<br><script 〜)を削除してしまうというのも
一つの方法ですが、正規表現を修正してマッチさせちゃうほうが簡単かな?
以下に修正してみてください。

m#<dt.*?>([0-9]+).+?<b>(.+?)</b>(?:</font>|</a>)(?: <small>mailto:(.+?)</small>)? <small>\[(.*?)\]</small><dd> ?(.*?)<br><br>(<dt.*?>|</dl>|<br><script)#mik


ところで上で変換テストをしていて気づいたのですが、別の問題点を発見してしまいました。
レス中にURLリンクが書き込まれていると、先頭の「http://」を勝手に(?)省略しちゃうようです。
(該当スレをブラウザで表示してよく見るとわかるはず)

この状態のままdatに変換して専ブラで読ませてもリンクであることを認識できずいろいろ不都合が
あると思われるので、補正したほうがよいでしょう。
前処理に以下を記述してください。

# 省略された「http://」を補う
s#<a href="http://yomi\.mobi/rjump/.*?>(.*?)</a>#http://$1#igk

684名無しさん:2012/04/06(金) 16:13:27
お世話になります。

2ちゃんねるの国(その120)、具体的にはhttp://2chland.net/gcomic/1113225299.html
2ちゃんねるのエリート(その141)、具体的にはhttp://elite2ch.info/gcomic/1128762503.html

以上のスレを.dat化したいのですが、お力添えよろしくお願いします。

685 ◆/vmukiyuzw:2012/04/06(金) 20:28:56
>>684さん
説明の都合上まず「その141」 elite2ch.info の方からいきます。
実はこのサイト、自分は以前別のルートで見つけていて、ちょっと気になる点があったので
正規表現他を調べてメモっておいたものでした。

気になる点というのは、このサイトのHTMLにはレス番号(htmltodatでは$1でマッチさせるもの)
が存在せず、<ol><li>タグでレスに連番が振られているのです。
(<ol>タグの後の<li>タグは1からの連番として表示される)

これはhtmltodatでは想定していないことなので、どうしたものかと思いましたが、レス番号以外のもの
にマッチさせても仕方がないので、とりあえず$1をダミー(何にもマッチさせない)にしてみました。
プレビュー欄にレス番が表示されないという若干の不都合はありますが、dat変換自体は問題なく
できるようです。


正規表現:
m#<li><span>()(.*?) ?\[ ?(.*?) ?\] ?(.*?)</span>\s*<p> ?(.*?) ?<br></p>#mi

前処理:
# 日付とIDの間に何かあると邪魔なので除去
s#</span><span>##igk
# レス中の不要なタグを除去
s#<em>##igk
s#</em>##igk
s#<strong>##igk
s#</strong>##igk
s#<img .*?>##igk
# <br />タグに対応していない専ブラへの対応
s#<br />#<br>#igk
# 後ガラガラがいっぱいあるので地道に除去
s#\r\n\s*<a .*?</a>##igk
s#<object .*\r\n##igk
s#<param .*\r\n##igk
s#<embed .*\r\n##igk
s#<iframe .*\r\n##igk
s#<div .*\r\n##igk

変換結果式:
$2<>$3<>$4<>$5<>
(↑メール欄逆転)



次に「その120」 2chland.net ですが、HTMLソースを見てみると「その141」とそっくり。
正規表現他も上と共通でいけると思います。

(実際には細かい差異はあったのですが上の正規表現はその差分を吸収したものにしています。
前処理も「その120」には不要なものもあって多少冗長なのですが特に問題はないと思います)

686684:2012/04/07(土) 11:40:20
>>685

◆/vmukiyuzwさま
早速の対応、ありがとうございました。

htmltodatにて.dat取得、専ブラ(Jane系)にて確認しました。
特に問題なさそうです!

またお力添え、よろしくお願いいたします。

687名無しさん:2012/04/20(金) 15:07:46
2ちゃんねろ(その155)より、
http://www.2channero.com/comic/1112437741/
のスレを.dat化したいのですが、お力添えよろしくお願いします。

追記
ココのサイトは100単位でスレを表示する使用になっているようです。
100スレずつでもかまいませんのでよろしくお願いいたします。

688 ◆/vmukiyuzw:2012/04/20(金) 20:34:03
>>687さん
HTMLの形式自体は<div>タグや<span>タグで比較的きれいに構造化されているので
マッチする正規表現を書くのは難しくないです。
(<span class='id'>タグが何の意味も成してないのは今のところ仕様かな?)

正規表現:
m#<div class='number'><span.*?>(\d+).*?<span class='name'>(.*?)</span><span class='mail'>\[(.*?)\]</span><span class='date'>(?:投稿日)?:?(.*?)</span>.*?<div class='resc'.*?> ?(.*?)\s*</div>#mik

前処理:
# タイトルに余分なものがついてくるので補正
s#(<title>.*?) \(\d+\)【.*?】(</title>)#$1$2#ik

変換結果式:
$2<>$3<>$4<>$5<>
(↑メール欄逆転)


ちなみに100レスずつしか表示できないのは何とかならないか調べてみましたが
ちょっとわからなかったですね。
何とかお好みの手段でつなぎ合わせて一個のdatにして頂くしか仕方ないかと思います。
101以降のレスを変換しようとすると「レス番が飛んでいます」と変換警告がいちいち
出てきちゃいますが無視して問題ないと思います。

あと、URLをhttp://www.2channero.com/comic/1112437741/s1001/(1001以降表示)にすると
1002、1003のレスが(内容は空っぽですが)表示されます。これをこのままdat変換すると
当然1003レスまで変換されてしまいます。
1001到達以外のスレを調べてみましたがやはり2レスだけ余分に表示されるので、このサイトの
仕様のようですが、元の2chでのスレには存在していないものと思われます。
まあ単なるゴミなんで表示上邪魔な以外実害はないでしょうが、この余分な2レスを
取っ払いたければ、後処理で

s#<><><><>\s*##igk

とする方法があります。
ただ、datのつなぎ合わせにエディタを使うのならそこで<><><><>の行を手動で削除しちゃっても
いいでしょう。
もしくは「dat変換結果」ウィンドウ上で同様に<><><><>の行を削除してから保存する、
というのもあります。

689名無しさん:2012/04/20(金) 21:52:06
◆/vmukiyuzwさま

100スレずつの表示の件まで調査までいただき、恐縮です。
仕様(先ほどは誤変換してしまいました、お恥ずかしい)に
関しても、1001以降のスレに関しても了解しました。

地道に全てをdat化して、最後にエディタにて全てつなぎ合わせて、
完全構築したいと思います。

正直出来れば、自分で対応できればなぁと思うのですが...。OTL
初心者サイトも自分にあったものを見つけられず苦労しています。


わたしも含め、いつも質問者に丁寧に対応していただき感謝です。

690名無しさん:2012/06/15(金) 15:24:44
http://logsoku.com/thread/kohada.2ch.net/gamestg/1338685324/

>>672を適用しても変換されませんでした。
何かやりかたを間違えているのでしょうか…?


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板