あなたは何が問題なのかよく分かりませんが、私はあなたの仕事をどのように達成しましたか?
最初に私は開発ツールでネットワークタブを開いたままウェブブラウザでページを閲覧しました。
ここから、実際のブラウザから送信されたヘッダーのリストを収集しました。その後、後続のヘッダーを追加してHttpWebRequestを構築し、ページの完全なHTMLを取得することができました。
public string getHtml()
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://www.fa-mag.com/search.php?and_or=and&date_range=all&magazine=&sort=newest&method=basic&query=ubs");
req.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0";
req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
req.AllowAutoRedirect = false;
req.Headers.Add(HttpRequestHeader.AcceptLanguage, "en-US,en;q=0.5");
req.Headers.Add("cookie", "analytics_id=595127c20cdfe6.52043028595127c20ce022.71834842; PHPSESSID=tbbo7npldsv26n2q7pg2728k77; D_IID=3E4FEA7F-9794-34EE-99F8-87EEA3DF0689; D_UID=5F374D94-270D-3653-8C54-9A46F381EAE2; D_ZID=505BB8EF-5A2D-3CBD-87D8-FABAD5014776; D_ZUID=BB0C9EF2-0E7B-383E-A03A-A3E92CC8051A; D_HID=9642D775-D860-3F04-8720-73E5339042BA; D_SID=63.138.127.22:6Ci6jv2Xv+yum3m9lNfnyRcAylne67YfnS/u8goKrxQ");
req.Headers.Add("DNT", "1");
req.Headers.Add("Upgrade-Insecure-Requests", "1");
HttpWebResponse res = null;
try
{
res = (HttpWebResponse)req.GetResponse();
}
catch (WebException webex)
{
res = (HttpWebResponse)webex.Response;
}
string html = new StreamReader(res.GetResponseStream()).ReadToEnd();
return html;
}
カスタムヘッダーがないと、416応答を送信してリダイレクトするボット保護がページにあります。あなたがリダイレクトページのhtmlを読むと、サイトがあなたをボットとして検出したことを示します。
実行中のコードを追加した場合に役立ちます – foobar
HTMLを取得していない場合は、最初のリクエストでスクレイプする必要がありますが、JavaScriptがロードされている可能性があります。この場合、必要なものを得るために要求を複製する必要があります。 – ThePerplexedOne
記事リンクのHTMLを取得しています。私が見ることのできるところでは、クエリー引数が空のままであれば、クエリー引数http://www.fa-mag.com/search.php?query=u&offset=0を送る必要があります。 –