python爬取去哪兒出境遊攻略

mmz_77發表於2023-03-27

近期,關於熱門旅遊目的地泰國的旅遊安全問題受到熱議,好在官網已經針對這些假新聞進行了闢謠,一些旅行社表示經過這次泰國遊安全問題熱議雖然暫未收到退訂單的情況,但預訂量有所減少。相關的不實言論容易對旅遊情緒產生極大的負面影響。

事實上,截至目前泰國遊仍是國內出境遊的目的地國家之一,無論在各線上旅遊平臺上的搜尋熱度還是預訂量均位居前列。馬蜂窩大資料顯示,近一週馬蜂窩站內“五一出境遊”相關熱度上漲超過110%,泰國、馬來西亞、印度尼西亞、日本、西班牙位居目前五一假期訂單量最高的境外目的地前五。

我想很多人處境遊之前肯定會做很多的攻略, 但是網上攻略太多了看得頭皮發麻,但是仔細看的話每條旅遊攻略都有特定的引數條件的,比如人數、價錢、遊玩時間,也就是說我們可以透過篩選這些條件初步獲取我們滿意的攻略。要實現這樣讓人滿意的攻略唯有python爬蟲,所以這裡我們就透過使用python爬取去哪兒有關出國遊的各種攻略來制定自己的一份滿意的出遊路線。

爬取資料過程中最重要的就是解決反爬機制的問題,一般網站都是從3個方面進行反爬限制, 使用者請求的Headers、 使用者行為、 網站目錄和資料載入方式,其中比較常見的就是基於使用者行為的反爬,特別是同一IP短時間內多次訪問的限制,對於這種情況直接使用爬蟲代理IP就可以解決。

代理IP的獲取也是很簡單的事,網上有免費和付費的,但是質量都層次不齊。如果是企業裡需要的話,建議直接購買優質代理,不僅代理質量有保證,售後也是有保證的嗎。代理在爬蟲程式裡面的實現方法這裡可以分享下:

// 要訪問的目標頁面

string targetUrl = "



// 代理伺服器(產品官網 )

string proxyHost = "

string proxyPort = "31111";


// 代理驗證資訊

string proxyUser = "16ZWCETA";

string proxyPass = "852746";


// 設定代理伺服器

WebProxy proxy = new WebProxy(string.Format("{0}:{1}", proxyHost, proxyPort), true);



ServicePointManager.Expect100Continue = false;


var request = WebRequest.Create(targetUrl) as HttpWebRequest;


request.AllowAutoRedirect = true;

request.KeepAlive = true;

request.Method    = "GET";

request.Proxy     = proxy;


//request.Proxy.Credentials = CredentialCache.DefaultCredentials;


request.Proxy.Credentials = new System.Net.NetworkCredential(proxyUser, proxyPass);


// 設定Proxy Tunnel

// Random ran=new Random();

// int tunnel =ran.Next(1,10000);

// request.Headers.Add("Proxy-Tunnel", String.valueOf(tunnel));



//request.Timeout = 20000;

//request.ServicePoint.ConnectionLimit = 512;

//request.UserAgent = "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36";

//request.Headers.Add("Cache-Control", "max-age=0");

//request.Headers.Add("DNT", "1");



//String encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(proxyUser + ":" + proxyPass));

//request.Headers.Add("Proxy-Authorization", "Basic " + encoded);


using (var response = request.GetResponse() as HttpWebResponse)

using (var sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8))

{

    string htmlStr = sr.ReadToEnd();

}


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31522063/viewspace-2941903/,如需轉載,請註明出處,否則將追究法律責任。

相關文章