を初めて使用し、サイトからデータをクロールするためWeb Crawling
に を使用しています。HttpWebRequest
今のところ、WordPress サイトから正常にクロールしてデータを取得できました。このデータは単純なユーザー プロファイル データでした。(名前、電子メール、AIM ID など...)
ここで、演習としてウィキペディアをクロールします。最後にテキストボックスに入力された値を使用して検索し、検索値でウィキペディアをクロールして、検索から適切なタイトルを取得します。
今、私は次の疑問/困難を抱えています。
まず、これは可能ですか?ウィキにはこれをブロックするための robot.txt 設定があると聞きました。これは友人から聞いただけなので定かではありませんが。
以前に使用したのと同じ手順を使用していますが、必要な結果が得られません。
ありがとう !
更新: @svick からの説明とヘルプの後、以下のコードを試しましたが、まだ値を取得できませんでした (コードの最後の行を参照してください。検索結果ページの html マークアップが期待されています)。
string searchUrl = "http://en.wikipedia.org/w/index.php?search=Wikipedia&title=Special%3ASearch";
var postData = new StringBuilder();
postData.Append("search=" + model.Query);
postData.Append("&");
postData.Append("title" + "Special:Search");
byte[] data2 = Crawler.GetEncodedData(postData.ToString());
var webRequest = (HttpWebRequest)WebRequest.Create(searchUrl);
webRequest.Method = "POST";
webRequest.UserAgent = "Crawling HW (http://yassershaikh.com/contact-me/)";
webRequest.AllowAutoRedirect = false;
ServicePointManager.Expect100Continue = false;
Stream requestStream = webRequest.GetRequestStream();
requestStream.Write(data2, 0, data2.Length);
requestStream.Close();
var responseCsv = (HttpWebResponse)webRequest.GetResponse();
Stream response = responseCsv.GetResponseStream();
// Todo Parsing
var streamReader = new StreamReader(response);
string val = streamReader.ReadToEnd();
// val is empty !! <-- this is my problem !
これが私のGetEncodedData
メソッド定義です。
public static byte[] GetEncodedData(string postData)
{
var encoding = new ASCIIEncoding();
byte[] data = encoding.GetBytes(postData);
return data;
}
これについて私を助けてください。