Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cómo rastrea Python el contenido de una página dinámica?

¿Cómo rastrea Python el contenido de una página dinámica?

Ingrese la URL y obtenga el html. Ya he escrito la función.

Busque usted mismo:

getUrlRespHtml

Puede encontrar. la función de Python correspondiente:

#------------------------------------ --- ---------------------------------------

def ?getUrlResponse( url, ?postDict={}, ?headerDict={}, ?timeout=0, ?useGzip=False, ?postDataDelimiter="amp;")?:

"""Obtener?respuesta ?desde?url,?soporte?opcional?postDict, headerDict, tiempo de espera, useGzip

Nota:

1.?if?postDict?not?null,?url?request?auto ?convertirse en?POST?en lugar?de?el?predeterminado?GET

2?si?quiere?manejar?automáticamente?las?cookies,?debe?llamar?initAutoHandleCookies()?antes?de?usar? esta?función.

luego?siguiente?urllib2.Request?will?auto?handle?cookies

"""

#?makesure?url?is ?cadena, ?no?unicode,?de lo contrario?urllib2.urlopen?will?error

url?=?str(url);

si?(postDict)?:

if(postDataDelimiter=="amp;"):

postData?=?urllib.urlencode(postDict);

else:

postData?= ?"";

para?eachKey?in?postDict.keys()?:

postData? =?str(eachKey)? (postDict[ eachKey])? ?postDataDelimiter;

postData?=?postData.strip();

logging.info("postData=s",?postData);

req?=?urllib2.Request(url,?postData);

logging.info("req=s",?req);

req.add_header ('Contenido -Tipo',?"application/x-www-form-urlencoded");

¿else?:

req?=?urllib2.Request(url);

defHeaderDict?=?{

'User-Agent':?gConst['UserAgent'],

'Cache-Control'?:?'no

-cache',

'Aceptar': ?'*/*',

'Conexión': ?'Keep-Alive',

};

#?add?default?headers?firstly

para?eachDefHd?in?defHeaderDict.keys()?:

#print?"add?default? header:?s=s"(eachDefHd, defHeaderDict[eachDefHd]);

req.add_header(eachDefHd,?defHeaderDict[eachDefHd]);

if(useGzip)?:

#print?"use?gzip?for",url;

req.add_header('Aceptar-codificación',?'gzip,?deflate');

#?agregar?encabezado?personalizado?más tarde?-gt;?permitir?sobrescribir?¿encabezado predeterminado?

if(headerDict)?:

#imprimir?"agregado? encabezado: ", headerDict;

para?key?in?headerDict.keys()?:

req.add_header(key,?headerDict[key]);

if(timeout?gt;?0)?:

#?set?timeout?value?if?necessary

resp?=?urllib2.urlopen(req,? timeout=timeout);

¿otra cosa?:

resp?=?urllib2.urlopen(req);

#update?cookies?into?local?file

if(gVal['cookieUseFile']):

gVal['cj'].save();

logging.info("gVal[' cj']=s",?gVal['cj']);

return?resp;

#--------------- -------------------------------------------------- -------------

#?get?response?html==cuerpo?de?url

#def?getUrlRespHtml(url,?postDict ={},?headerDict={},?timeout=0,?useGzip=False)?:

def?getUrlRespHtml(url,?postDict={},?headerDict={},?timeout= 0,?useGzip=True,?postDataDelimiter="&")?:

resp?=?getUrlResponse(url,?postDict,?headerDict,?timeout,?useGzip,?postDataDelimiter);

p>

respHtml?=?resp.read();

#aquí,?tal vez,?incluso?si?no?enviar?Aceptar codificación:?gzip,?desinflar

#pero?aún?respuesta?gzip?o?desinflar,?entonces? directamente?hacer?descomprimir

#if(useGzip)?:

#print?"---antes? descomprimir,?len(respHtml)=",len(respHtml);

respInfo?=?resp.info();

#?Servidor:?nginx/1.0.8

#?Fecha:?Dom,?08 ?Abr?2012?12:30:35?GMT

#?Content-Type:?text/html

#?Transfer-Encoding:?chunked

#?Connection:?close

#?Vary:?Accept-Encoding

#?...

#?Content-Encoding:?gzip

#?en algún momento,?la?solicitud?usa?gzip, desinflar,?pero?en realidad?devuelta?es?un-gzip?html

#?-gt;?respuesta? info?not?include?above?"Content-Encoding:?gzip"

#?eg:?/s/comment_730793bf010144j7_3.html

#?-gt;?so?here ?solo?decodificar?cuando?es?de hecho?es?datos comprimidos?

#Content-Encoding:?deflate

if("Content-Encoding"?in?respInfo ):

if("gzip"?==?respInfo['Content-Encoding']):

respHtml?=?zlib.decompress(respHtml,?16 zlib.MAX_WBITS );

elif("deflate"?==?respInfo['Content-Encoding']):

respHtml?=?zlib.decompress(respHtml,?-zlib.MAX_WBITS );

return?respHtml;

Y código de muestra: url?=?"";

respHtml?=?getUrlRespHtml(url);

Funciones completas de la biblioteca, búsquelas usted mismo:

crifanLib.py

Para obtener detalles sobre cómo rastrear páginas dinámicas, consulte:

Tutorial especial de Python: rastreo Sitio web, simular inicio de sesión, capturar páginas web dinámicas

(Puede encontrarlo buscando el título usted mismo)