पासवर्ड और उपयोगकर्ता नाम के साथ वेबसाइट पर HTTP अनुरोध भेजें, फिर परिणाम रिकॉर्ड करें


1

मुझे वेब-आधारित निगरानी सेवा ( लाक्रोस अलर्ट ) से कुछ संख्या (तापमान और अन्य) रिकॉर्ड करने की आवश्यकता है । हालाँकि, आपको इस सेवा का उपयोग करने के लिए लॉगिन करना होगा। मेरे पास एक खाता है, और मैं यहां बताए गए चरणों का पालन करना शुरू कर रहा हूं । यह केवल Cygwin का उपयोग करके एक सरल वेबसाइट को पार्स करने के लिए आवश्यक चरणों की रूपरेखा देता है, न कि उपयोगकर्ता नाम और पासवर्ड बंद वेबसाइट। मैंने ऐसा कुछ भी खोजने की कोशिश की, जो ऐसा कर सके, लेकिन कोई किस्मत नहीं थी। मैं वेबसाइट पर कैसे लॉगिन कर सकता हूं, और फिर ऊपर पाए गए सेटअप का उपयोग करके एक पृष्ठ को पार्स कर सकता हूं? क्या Cygwin रास्ता इसे करने का सबसे अच्छा तरीका है? क्या वेबसाइट को पार्स करने और लॉगिन करने का एक आसान तरीका है, जैसे कि बैच स्क्रिप्ट का उपयोग करना? यह भी दिखता है कि मैं पेज को डाउनलोड करने के लिए Wget का उपयोग कर सकता हूं, लेकिन मुझे यकीन नहीं है कि इसे पार्स कैसे किया जाए। ऐसा लगेगा:

# Now grab the page or pages we care about.
wget --load-cookies cookies.txt \
-p http://server.com/interesting/article.php

मैं एक निर्धारित कार्य पर कैसे चलूंगा, और <div>पृष्ठ के कुछ टैग भी पार्स करूंगा ?


क्या यह कुकीज़ का उपयोग करता है या क्या आपको हर बार लॉगिन करने की आवश्यकता है?
थॉमस वेलर

@ThomasW। यदि मैं Remember Meलॉग इन करते समय एक बटन पर क्लिक करता हूँ, तो हाँ, यह तब से होता है जब तक कि यह मुझे स्वतः लॉग इन नहीं कर देता।
hichris123

इस सवाल का एक अच्छा जवाब यहाँ है: stackoverflow.com/questions/1324421/…
sahmeepee

जवाबों:


1

यह वास्तव में इस बात पर निर्भर करता है कि वेब पेज में दर्शाई गई जानकारी कितनी आसान / जटिल है। यदि यह ऐसा कुछ है जिसे बाहर निकाला जा सकता है, तो आप यहां एसओ उत्तर का उपयोग कर सकते हैं (ऊपर की टिप्पणी से)। हालांकि, अगर यह ऐसा कुछ नहीं है जिसे आसानी से निकाला जा सकता है, तो आप एक पायथन स्क्रिप्ट लिख सकते हैं जो आसानी से आपके लिए ऐसा कर सकती है। आपको urlib2 और कुकीज का उपयोग करने की आवश्यकता होगी, और फिर HTML को पार्स करने के लिए lxml और BeautifulSoup जैसी किसी चीज़ का उपयोग करना होगा। एसओ उत्तर यहां एक उत्कृष्ट मार्गदर्शिका है कि आप संभावित रूप से कैसे लॉगिन कर सकते हैं। आसानी के लिए, मैं यहां कोड पेस्ट करने जा रहा हूं:

import cookielib
import urllib
import urllib2
from BeautifulSoup import BeautifulSoup #you can also use lxml, if you wanted.

# Store the cookies and create an opener that will hold them
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

# Add our headers
opener.addheaders = [('User-agent', 'RedditTesting')]

# Install our opener (note that this changes the global opener to the one
# we just made, but you can also just call opener.open() if you want)
urllib2.install_opener(opener)

# The action/ target from the form
authentication_url = 'https://ssl.reddit.com/post/login'

# Input parameters we are going to send
payload = {
  'op': 'login-main',
  'user': '<username>',
  'passwd': '<password>'
  }

# Use urllib to encode the payload
data = urllib.urlencode(payload)

# Build our Request object (supplying 'data' makes it a POST)
req = urllib2.Request(authentication_url, data)

# Make the request and read the response
resp = urllib2.urlopen(req)
contents = resp.read()

# parse the page using BeautifulSoup. You'll have to look at the DOM
# structure to do this correctly, but there are resources all over the
# place that makes this really easy.
soup = BeatifulSoup(contents)
myTag = soup.find("<sometag>")

आप इसके बाद हर X संख्या में मिनटों को चला सकते हैं, या आप प्रत्येक X मिनटों में उपरोक्त फ़ंक्शन के निष्पादन के समय में पायथन का उपयोग कर सकते हैं, और परिणामों को ईमेल / पोस्ट कर सकते हैं। आप जो करने की कोशिश कर रहे हैं, उसके आधार पर, यह ओवरकिल हो सकता है, लेकिन जब मुझे अतीत में ऐसा ही कुछ करने की आवश्यकता होती है, तो यह वह मार्ग है जो मैंने लिया है।


divएक HTML संरचना में एक टैग आसानी से निकाला जा सकता है?
hichris123

हाँ, यह कठिन नहीं होना चाहिए। यह आसान बनाता है यदि div के पास एक आईडी या इसी तरह की अनूठी विशेषता है। उस बिंदु पर, आप कुछ सूप की तरह काम करेंगे .find ("div", {"id": "uniqueid"}), और यह सटीक div जिसे आप चाहते हैं।
कार्तिक रंगराजन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.