मुझे पाइथन लिपि के माध्यम से कुछ HTML पृष्ठों तक पहुंचने की आवश्यकता है, समस्या यह है कि मुझे कुकी कार्यक्षमता की आवश्यकता है, इसलिए एक सरल urllib HTTP अनुरोध काम नहीं करेगा।ब्राउज़र सिमुलेशन - पायथन
कोई विचार?
मुझे पाइथन लिपि के माध्यम से कुछ HTML पृष्ठों तक पहुंचने की आवश्यकता है, समस्या यह है कि मुझे कुकी कार्यक्षमता की आवश्यकता है, इसलिए एक सरल urllib HTTP अनुरोध काम नहीं करेगा।ब्राउज़र सिमुलेशन - पायथन
कोई विचार?
जांच Mechanize। "पाइथन में राज्यव्यापी प्रोग्रामेटिक वेब ब्राउजिंग"।
यह स्वचालित रूप से कुकीज़ को संभालता है।
import mechanize
br = mechanize.Browser()
resp = br.open("http://www.mysitewithcookies.com/")
print resp.info() # headers
print resp.read() # content
मशीनी भी डिफ़ॉल्ट रूप से सक्षम कुकी हैंडलिंग के साथ urllib2 एपीआई का खुलासा करता है।
यद्यपि काफी धीमी हो सकती है, इसलिए वाईएमएमवी। –
ग्रेग, क्या आप समझा सकते हैं? इसके मूल रूप से urllib2 –
@Gregg के आसपास बस एक रैपर आप समझा सकते हैं? : डी – RadiantHex
यहां कुछ ऐसा है जो कुकीज़ करता है, और बोनस के रूप में एक साइट के लिए प्रमाणीकरण करता है जिसके लिए उपयोगकर्ता नाम और पासवर्ड की आवश्यकता होती है।
import urllib2
import cookielib
import string
def cook():
url="http://wherever"
cj = cookielib.LWPCookieJar()
authinfo = urllib2.HTTPBasicAuthHandler()
realm="realmName"
username="userName"
password="passWord"
host="www.wherever.com"
authinfo.add_password(realm, host, username, password)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj), authinfo)
urllib2.install_opener(opener)
# Create request object
txheaders = { 'User-agent' : "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)" }
try:
req = urllib2.Request(url, None, txheaders)
cj.add_cookie_header(req)
f = urllib2.urlopen(req)
except IOError, e:
print "Failed to open", url
if hasattr(e, 'code'):
print "Error code:", e.code
else:
print f
print f.read()
print f.info()
f.close()
print 'Cookies:'
for index, cookie in enumerate(cj):
print index, " : ", cookie
cj.save("cookies.lwp")
@ मार्क: बहुत बहुत धन्यवाद! यह पूरी तरह से काम किया! – RadiantHex
शायद आपको यह जवाब स्वीकार करना चाहिए, आरएच, अगर आपने यह आपके लिए काम किया है। –
cookielib module HTTP क्लाइंट के लिए कुकी हैंडलिंग प्रदान करता है।
cookielib मॉड्यूल HTTP कुकीज़ के स्वचालित संचालन के लिए कक्षाओं को परिभाषित करता है। यह वेब साइटों तक पहुंचने के लिए उपयोगी है जिसके लिए डेटा के छोटे टुकड़े की आवश्यकता होती है - कुकीज - क्लाइंट मशीन पर एक वेब सर्वर से HTTP प्रतिक्रिया द्वारा सेट किया जाना चाहिए, और उसके बाद बाद में HTTP अनुरोधों में सर्वर पर लौटा दिया जाता है।
डॉक शो कैसे urllib
साथ संयोजन के रूप में कुकीज़ को संसाधित करने में उदाहरण:
import cookielib, urllib2
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
r = opener.open("http://example.com/")
क्यों आप इस के लिए Dryscrape कोशिश नहीं:
Import dryscrape as d
d.start_xvfb()
Br = d.Session()
Br.visit('http://URL.COM')
#open webpage
Br.at_xpath('//*[@id = "email"]').set('[email protected]')
#finding input by id
Br.at_xpath('//*[@id = "pass"]').set('pasword')
Br.at_xpath('//*[@id = "submit_button"]').click()
#put id of submit button and click it
आप कुकी lib की जरूरत नहीं है कुकी संग्रहीत करने के लिए सिर्फ स्थापित Dryscrape और अपनी शैली में ऐसा
अजगर के कई जावास्क्रिप्ट आधारित कार्यान्वयन उपलब्ध हैं (जो किसी भी अतिरिक्त प्लगइन के बिना एक वेब ब्राउज़र में चला सकते हैं)। क्या यह प्रासंगिक होगा? http://syntensity.com/static/python.html –