2017-03-24 22 views
0

学問的な理由から、私は北朝鮮の辞書(著作権関連の問題について既に知らされている)を掻き集める必要があります。これは、実際には非常に単純なものです。カールを使用したスクラップ辞書

uriminzokkiri.com/uri_foreign/dic/index.php?page=1

と最後のエントリは次の場所にあります:ちょうど各辞書エントリのURLに昇順の番号を使用することである

uriminzokkiri。 com/uri_foreign/dic/index.php?page = 313372

基本的には、これを行う最も簡単な方法は、ループ構築を使用してエントリの数を増やし、サイトが正常にダウンロードされたかどうかをチェックする単純なシェルスクリプトを作成することです。それが成功するまでサイトをダウンロードしようとすることを繰り返します(これもまた些細なことです)。

しかし、これをテストするエントリを含むサイトをダウンロードしようとしましたが失敗しました。サイトはセッションCookieを利用するので、最初に "-c"パラメータを使用してファイルに保存し、 "-v"(冗長)と "-b"(cookieを取得)からcurlを呼び出します次の出力が生成されたファイル)のパラメータ、:

curl output

これらはFirebugので示されているようなリクエストとレスポンスヘッダである: Request/Response headers

Iはまた、「使用して、これらすべての要求ヘッダーを通過しようとしました-H "パラメータを使用していましたが、これはうまくいきませんでした。

誰かがこの辞書を掻き集めるためのPythonベースのスクレーパーをコーディングし始めましたが、これが単純なbashスクリプトを使用して実現できるのであれば、これはちょっとしたことです。

私がこれまでに試したアプローチがうまくいかず、これがどうして実現できるのか誰にも分かりますか?

事前に感謝し、よろしく

+0

私はあなたがpastebinで共有したコマンドを使用しましたが(btwも同様に質問で共有されているはずです)、ページを取得するのにはうまくいきました。今すぐあなたがする必要があるのは、何らかのHTMLパーサーや正規表現を使って必要な項目を見つけ出すことです(Pythonは残虐行為のように聞こえません) – apokryfos

+0

申し訳ありませんが、私はURLを短くしました間違って:Firebugヘッダーのように "&ID = 1"(最初のエントリ)を追加する必要があります。http://uriminzokkiri.com/uri_foreign/dic/index.php?page=1&ID=1このアドレスをブラウザに入力すると、そのエントリを含むサイトが返されますが、そのページをスクラップするには[div#dic_desc_center](http://pasteboard.co/NmhG2WTbg)の内容を取得する必要があります。jpg)Firebugは、「this」オブジェクトが正しくないため、[LenientThis]が無視されたプロパティに属する「get」または「set」を指定します。どうすれば "dic_desc_center"を得ることができますか/それはどこに指していますか?事前に感謝 – ipsecreloaded

答えて

0

あなたは次のようにいくつかのより多くのHttp-ヘッダを入れることができます:

  • 原産地:魔女はあなたがスクラップ元のサイトのドメインです。
  • User-Agent:魔女はあなたがインターネットから得ることができるあなたのクライアント構成魔法です。

そうでない場合、あなたは、あなたのブラウザのコード検査からのbashスクリプトカールを取得するPHPコードに変換することができます。すべて自動化され、オンラインで存在します。

+0

あなたのヒントをありがとう。私はすでに成功していない(起点、ユーザエージェント、キャッシング、クッキーなど)、Firefoxによって渡されたすべてのHTTPヘッダを渡してみました。 PHPとDOM/DIVの要素は私の知識の一部ではありません(私はLinuxの管理とC/C++プログラミングに特化しています) - サイトはこのDIVオブジェクトの内容をどこかから呼び出さなければならないので、これをトレースする方法はありませんか? – ipsecreloaded

関連する問題