0

libcurl を使用して、必要に応じて任意の Web サイトからテキスト コンテンツをスクレイピングできる Web サイト クローラーを C で作成しました。

ただし、有効なサブスクリプションを使用して、大規模なニュース パブリッシャなどのパスワードで保護された Web サイトをクロールできるようにする必要があります。したがって、これらのサイトのユーザー名/パスワードがあります。

libcurlを使用してこれを達成するためのアドバイスを誰でも提供できますか? ユーザー名/パスワードをlibcurlオプションに追加できることは承知しています。これを実行し、パスワードで保護されている可能性のある適切なページにアクセスするだけで十分だと思いました. CURL コードの抜粋を次に示します。

curl_easy_setopt(curlTestHandle, CURLOPT_URL, "mypasswordprotectedwebsiteurl");
curl_easy_setopt(curlTestHandle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
curl_easy_setopt(curlTestHandle, CURLOPT_FOLLOWLOCATION, 1);
curl_easy_setopt(curlTestHandle, CURLOPT_MAXREDIRS, 5);

curl_easy_setopt(curlTestHandle, CURLOPT_USERPWD, "myusername:mypassword");

res = curl_easy_perform(curlTestHandle);
curl_easy_getinfo (curlTestHandle, CURLINFO_RESPONSE_CODE, &httpResponse);

しかし、おそらく私はそれを単純化しすぎていますか?また、一部の Web サイトでは機能するかもしれませんが、他の Web サイトでは機能しないのでしょうか? 誰かが同様のことをして達成しましたか?

ありがとう、

マノジ

4

1 に答える 1

0

場合によります。サイトがログイン フォームの非表示フィールドに異なる番号を生成する場合は、HTML ファイルを解析 (または単純な検索) して、非表示フィールドをリクエストに追加する必要があります。それ以外の場合は、コードに値をハードコーディングできます。

また、クロールする Web サイトの数によっても異なります。多数の異なる Web サイトがある場合、最善の方法は HTML を解析し (または文字列検索でフォームを読み取り)、ログイン時に入力するフィールドを取得することです。

また、Cookie を読み取って設定する必要があります。libcurl にはこれを簡単に処理できる機能が必要だと思います。

--- 私は眠くて、本題から外れて怒鳴っているかもしれません。この投稿がまったく役に立たない場合は、削除するように言ってください。

于 2012-05-22T10:12:28.493 に答える