J'ai un site de test que je récupère. Le site utilise la méthode POST, ainsi que les cookies. (Pas sûr que les cookies sont critiques, mais je suis enclin à penser qu'ils sont ..)python aller chercher plusieurs pages en utilisant la publication et les cookies
L'application présente une page, avec un "bouton suivant" pour générer les pages suivantes. J'ai utilisé LiveHttpHeaders/Firefof pour déterminer ce que les données de publication devraient être dans la requête, ainsi que le fait que les cookies sont en cours de définition. J'ai également vérifié que la page ne fonctionne pas si les cookies sont dosés par le navigateur. J'essaie de comprendre ce que j'ai raté/foiré dans mon test. L'exemple de code présente les données de requête/post pour la première et la seconde page que j'essaie d'extraire.
J'ai cherché sur le net, ainsi que de nombreuses triedn différentes tentatives possibles, donc je suis sûr que je manque quelque chose de simple ..
Toutes les pensées/commentaires sont appréciés ..
#!/usr/bin/python
#test python script
import re
import urllib
import urllib2
import sys, string, os
from mechanize import Browser
import mechanize
import cookielib
########################
#
# Parsing App Information
########################
# datafile
cj = "p"
COOKIEFILE = 'cookies.lwp'
#cookielib = 1
urlopen = urllib2.urlopen
#cj = urllib2.cookielib.LWPCookieJar()
cj = cookielib.LWPCookieJar()
#cj = ClientCookie.LWPCookieJar()
Request = urllib2.Request
br = Browser()
if cj != None:
print "sss"
#install the CookieJar for the default CookieProcessor
if os.path.isfile(COOKIEFILE):
cj.load(COOKIEFILE)
print "foo\n"
if cookielib:
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)
print "foo2\n"
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
values1 = {'name' : 'Michael Foord',
'location' : 'Northampton',
'language' : 'Python' }
headers = { 'User-Agent' : user_agent }
if __name__ == "__main__":
# main app
baseurl="https://pisa.ucsc.edu/class_search/index.php"
print "b = ",baseurl
print "b = ",headers
query="action=results&binds%5B%3Aterm%5D=2100&binds%5B%3Areg_status%5D=O&binds%5B%3Asubject%5D=&binds%5B%3Acatalog_nbr_op%5D=%3D&binds%5B%3Acatalog_nbr%5D=&binds%5B%3Atitle%5D=&binds%5B%3Ainstr_name_op%5D=%3D&binds%5B%3Ainstructor%5D=&binds%5B%3Age%5D=&binds%5B%3Acrse_units_op%5D=%3D&binds%5B%3Acrse_units_from%5D=&binds%5B%3Acrse_units_to%5D=&binds%5B%3Acrse_units_exact%5D=&binds%5B%3Adays%5D=&binds%5B%3Atimes%5D=&binds%5B%3Aacad_career%5D="
request = urllib2.Request(baseurl, query, headers)
response = urllib2.urlopen(request)
print "gggg \n"
#print req
print "\n gggg 555555\n"
print "res = ",response
x1 = response.read()
#x1 = res.read()
print x1
#sys.exit()
cj.save(COOKIEFILE) # resave cookies
if cj is None:
print "We don't have a cookie library available - sorry."
print "I can't show you any cookies."
else:
print 'These are the cookies we have received so far :'
for index, cookie in enumerate (cj):
print index, ' : ', cookie
cj.save(COOKIEFILE)
print "ffgg \n"
for index, cookie in enumerate (cj):
print index, ' : ', cookie
#baseurl ="http://students.yale.edu/oci/resultList.jsp"
baseurl="https://pisa.ucsc.edu/class_search/index.php"
query="action=next&Rec_Dur=100&sel_col%5Bclass_nbr%5D=1&sel_col%5Bclass_id%5D=1&sel_col%5Bclass_title%5D=1&sel_col%5Btype%5D=1&sel_col%5Bdays%5D=1&sel_col%5Btimes%5D=1&sel_col%5Binstr_name%5D=1&sel_col%5Bstatus%5D=1&sel_col%5Benrl_cap%5D=1&sel_col%5Benrl_tot%5D=1&sel_col%5Bseats_avail%5D=1&sel_col%5Blocation%5D=1"
request = urllib2.Request(baseurl, query, headers)
response = urllib2.urlopen(request)
print "gggg \n"
#print req
print "\n gggg 555555\n"
print "res = ",response
x1 = response.read()
#x1 = res.read()
print x1
sys.exit()
req = Request(baseurl, query, headers)
print "gggg \n"
#print req
print "\n gggg 555555\n"
#br.open(req)
res = urlopen(req)
print "gggg 000000000000\n"
x1 = res.read()
print x1
sys.exit()
merci pour toutes les pensées/pointeurs ...
et ouais .. je sais .. le script/test est vraiment mauvais!
-Tom
Qu'est-ce qui ne va pas? Qu'est-ce qui ne fonctionne pas? Oui, c'est vraiment un mauvais code, mais quelle erreur obtenez-vous? Si vous obtenez des pages, qu'est-ce qui ne va pas? –
hi ... n'a jamais pu faire fonctionner correctement urllib/cookie/referer. finalement passé à l'aide de pycurl pour accomplir l'extraction de données/extraction de la page. grâce à tous! –