मैं आपको HtmlAgilityPack सौंप सकता हूं!
मुझे लगता है कि आप यह सोचने के लिए कुकीज़ का उपयोग करने वाली वेबसाइट तक पहुंचने का प्रयास करते हैं कि कोई उपयोगकर्ता लॉग इन है (या नहीं)। यदि नहीं, तो यह आपको पंजीकरण/लॉग-इन करने के लिए मजबूर करेगा अन्यथा आपको कुछ भी देखने की अनुमति नहीं है। क्या मैं सही हू?
आपका ब्राउज़र उस कुकीज़ को संग्रहीत करता है, आपका सी # नहीं करता है! (व्यापक रूप से बोलते हुए)
आपको उस समस्या को हल करने के लिए कुकी कंटेनर बनाने की आवश्यकता है।
आपका सी #-ऐप लॉग-इन कर सकता है, कुकी/सत्र का अनुरोध कर सकता है, प्रतिक्रियाकर्ता से कुकीज़ ले सकता है और फिर आप प्रोफाइल या जो कुछ भी चाहते हैं उसे स्क्रैप करने में सक्षम होना चाहिए।
पोस्ट डेटा प्राप्त करें, जो सर्वर को भेजता है। आप टूल्स/एडॉन्स जैसे Fiddler, टैपर, ect ..
E.g. का उपयोग कर सकते हैं। PostdataString: user_name = testuser & पासवर्ड = TESTPASSWORD & भाषा = hi & कार्रवाई% 3Asubmit = सबमिट करें
यहाँ एक टुकड़ा का उपयोग कर सकते है।
//Create the PostData
string strPostData = "user_name=" + txtUser.Text + "&password=" + txtPass.Text + "&language=en&action%3Asubmit=Submit";
CookieContainer tempCookies = new CookieContainer();
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] data = encoding.GetBytes(strPostData);
//Create the Cookie
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.website.com/login.php");
request.Method = "POST";
request.KeepAlive = true;
request.AllowAutoRedirect = false;
request.Accept = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
request.ContentType = "application/x-www-form-urlencoded";
request.Referer = "http://www.website.com/login.php";
request.UserAgent = "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1";
request.ContentLength = data.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(data, 0, data.Length);
HttpWebResponse response;
response = (HttpWebResponse)request.GetResponse();
string sRequestHeaderBuffer = Convert.ToString(response.Headers);
requestStream.Close();
//Stream(-output) of the new website
StreamReader postReqReader = new StreamReader(response.GetResponseStream());
//RichTextBox to see the new source.
richTextBox1.Text = postReqReader.ReadToEnd();
आपको बीच में कुकी-पैरामीटर समायोजित करने और कोड के साथ-साथ अपने वर्तमान सत्र को जोड़ने की आवश्यकता होगी। यह आपके द्वारा देखी गई अनुरोधित वेबसाइट पर निर्भर करता है।
उदा .:
request.Headers.Add("Cookie", "language=en_US.UTF-8; StationID=" + sStationID + "; SessionID=" + sSessionID);
POF उपयोग की शर्तों scraping अनुमति नहीं है। – albattran
अपने डीबगर का उपयोग करें और कोड के माध्यम से कदम। 'Doc.GetElementsByTagName (.... 'लाइन पर ब्रेक पॉइंट डालें। फिर' GetElementsByTagName (" textarea ") 'टुकड़ा' द्वारा वापस लौटाए जाने का निरीक्षण करें। क्या इसमें 'message' तत्व' है? क्या यह एक सरणी है या बस एक तत्व। – NotMe
@ChrisLively मैं प्रेषक {संदेश} और आधार {संदेश} देखता हूं? – IceDawg