HELLO,大家好,這幾天使用爬蟲抓資料的時候遇到一些問題,因為在這個領域上還是新手,想請各位大大幫忙一下,謝謝!
在針對網頁做爬蟲的時候,有些網頁會因為短時間內request太多次請求,而造成該網站封鎖IP,而取不到資料的情況,小的我上網查了一下,似乎可以用Proxy代理IP替自己送出請求,所以我找了一些資料,去取得一些Proxy,但是目前都沒有成功,想請大家看一下我的程式碼,有沒有那裡疏忽的。
以下是我找到查詢可用Proxy的網頁:
http://www.freeproxylists.net/zh/?u=90&page=3
上面的網址我點不進去了,所以我又找了以下的網頁:
http://free-proxy.cz/zh/proxylist/country/TW/all/ping/all
以下是我的程式碼:
private static string getHtmlPage(string url, string referer, int timeout = 30, bool enableProxy = false)
{
try
{
string html = "";
var myRequest = (HttpWebRequest)WebRequest.Create(url);
myRequest.Method = "GET";
myRequest.Timeout = 1000 * timeout;
myRequest.AllowAutoRedirect = true;
myRequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36";
myRequest.Referer = referer;
if (enableProxy)
{
//設定代理ip
var webProxy = new WebProxy("211.79.61.8", 3128);
myRequest.Proxy = webProxy;
}
using (WebResponse wr = myRequest.GetResponse())
{
//在這裡對接收到的頁面內容進行處理
System.Text.Encoding myEncoding = System.Text.Encoding.GetEncoding("utf-8");
System.IO.StreamReader myStreamReader = new System.IO.StreamReader(wr.GetResponseStream(), myEncoding);
html = myStreamReader.ReadToEnd();
}
return html;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
在WebProxy
物件中設定Proxy給WebRequest
但是用了大概十組都沒有成功過,錯誤基本上都是作業逾時
、遠端伺服器傳回一個錯誤: (400) 不正確的要求。
或無法連接至遠端伺服器
,想請問大家哪裡有問題需要改進,如果還有沒注意到需要補充的地方,再麻煩各位大大告訴我,謝謝。