人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

いろいろなサイトのURLが一覧で500程度あります(csvファイル)。
そのURLごとのページタイトルを、自動取得してくれるアプリケーションを探しています。
アプリケーションは、Windows用でもMac用でも、あるいはWeb上で使えるアプリでも何でも可です。

●質問者: くたくた
●カテゴリ:コンピュータ インターネット
✍キーワード:CSV MAC URL Web Windows
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● gong1971
●30ポイント

例えばURLだけを抜き出しエディタなどで前後を [ と :title] で挟んで、(下記例参照)

http://q.hatena.ne.jp/1152753956
↓
[http://q.hatena.ne.jp/1152753956:title]

※秀丸エディタなど正規表現で置換が出来るエディタであれば、
 ¥n を :title]¥n[ に置換すると一気に処理できます。
 (¥は半角で入力してください。)

これを「はてなダイアリー」で「日記を書く」として、[編集]タブに貼り付け、

[プレビュー]タブで見ればタイトルに変換してくれます。

(500個一気にやると負担を掛けるので50個程度に分割した方が良さそう...)

はてなダイアリー


ただ100文字を超えると省略されてしまうのと、文字化けする事があるんですよね...。

この程度の処理であればWSHのVBSで(私が)スクリプトを組む事も出来るかと思いますが、

CSVファイルにはURL以外の情報も含まれますか?含まれる場合、何列データがあり、

何列目にURLが書かれていますか?また、URLだけにする事は可能ですか?(その方が処理が楽です)

◎質問者からの返答

ご回答ありがとうございます。

CSVファイルにはURL以外の情報は含まれてますが、URLだけにすることも可能です。


2 ● k6nch6n
●30ポイント

PHPだとこんな感じでしょうか。

2行目のパスは適当に置き換えてください。

この例では、url.txtは1行に1つのURLが書かれているテキストファイルです。

<?php
if (!($fp = fopen('/full/path/to/url.txt', 'r'))) {
 print 'File could not be opened.';
 die;
}
while (!feof($fp)) {
 $line = rtrim(fgets($fp, 32000));
 if (!($fp2 = fopen($line, 'r'))) {
 print 'URL could not be opened.';
 die;
 }
 while (!feof($fp2)) {
 $line2 = fgets($fp2, 32000);
 if (ereg('<title>', $line2)) {
 list($dummy, $title, $dummy) = split('<title>|</title>', $line2);
 $title = htmlspecialchars(mb_convert_encoding($title, 'UTF-8', 'UTF-8,EUC-JP,SJIS'));
 print $line.','.$title.'<br/>';
 }
 }
 fclose($fp2);
}
fclose($fp);
?>

ダミーURL: http://www.php.net/

◎質問者からの返答

ありがとうございます。

でもごめんなさい。これをどうすればいいかよくわかりません。プログラムの知識は乏しいので・・・


3 ● k_gori
●30ポイント

http://www.forest.impress.co.jp/lib/inet/websupt/webpilot/wwwc.h...

Windows用のソフトです。

URLを改行で区切ったテキストに変換して、このソフトに貼り付け、アイテムを全て選択した状態で右クリックの[タイトル取得]で出来ます。フォルダごとデスクトップなどにD&Dすればショートカットとして保存できます。

◎質問者からの返答

タイトル取得までは出来たのですが、これをさらに書き出したりする方法が見つかりませんでした。

何か方法はありますか?


4 ● lains_you
●30ポイント ベストアンサー

http://stylet.sakura.ne.jp/gettitle.html

上記のページの上の段にurl,url,……と入力して実行ボタンを押下すると、下の段にurl,title\nurl,title\n……の形式で出力されます。


html

<html>
<head>
<script type="text/javascript" src="prototype-1.4.0.js"></script>
<script type="text/javascript">
var ary = new Array();
function exe(){
$("dst").value = "";
ary = $("src").value.split(",");
getTitle();
}
function getTitle(){
if( ary.length == 0 ){
return;
}

var url = ary[0];
ary = ary.slice(1);

new Ajax.Request(
"gettitle.php",
{
method: "get",
parameters: "url=" + url,
onSuccess: function( res ){
$("dst").value += res.responseText + "\n";
getTitle();
},
onFailure: function( res ){
alert( res.toSource() );
},
onException: function( res, ex ){
alert( ex + " " + ex.message );
}
});
}
</script>
</head>
<body>

<input id="src" type="text" style="width:90%;height:45%;">
<button onclick="exe();">実行</button>
<br>
<textarea id="dst" style="width:90%;height:45%;"></textarea>

</body>

php

<?
if( isset($_GET[url]) ){
echo $_GET[url].",".getTitle(urldecode($_GET[url]));
}

function getTitle( $url ){
if( ereg("^http://",$url) ){
$text = file_get_contents( $url );
if( eregi("<title>.+</title>", $text, $regs) ){
$title = eregi_replace("<.?title>", "", $regs[0]);
$title = mb_convert_encoding($title, 'UTF-8', 'auto');
return $title;
}
}
return "";
}
?>
◎質問者からの返答

ありがとうございます。

求めていたものです!!!


5 ● k6nch6n
●10ポイント

Webアプリケーションの意味を取り違えていたようです。PHPのプログラムを実行できる環境があれば、上記のソースをコピーしたgettitle.phpなどを作成し、URL一覧のテキストファイルとともに亜サーバーにアップロードしgettitle.phpを実行するだけなのですが・・・。

いずれにせよ、k_goriさんの回答によるとWWWCのような定番ソフトにも機能はあるようですね。そちらの方が簡単だと思います。

ダミーURL: http://q.hatena.ne.jp/1152753956

◎質問者からの返答

ありがとうございます。

先ほどの方のもので、解決いたしましたが、もう一度皆様のご回答を見直して、使いやすそうなものを利用させていただきます。

gong1971様はVBスクリプトをもしかしたら書いていただいているかもしれませんが、大変申し訳ないですが、ここで質問を終了したいと思います。

本当に皆様ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ