Python rastreador web solicita de la biblioteca básica

Antes de aprender la biblioteca urllib al contenido adquieren web, pero en comparación con la biblioteca de solicitudes, urllib muy débil ráfaga, solicitudes ofrece muchos módulos es muy cómodo de usar, sin necesidad de invocar las urllib varios módulos que se pueden lograr.

pide a la biblioteca no es una biblioteca que viene con Python, es decir antes de la primera instalación de bibliotecas de Python usando Xu, haga todos modos PIP instalado, por lo que se recomienda encarecidamente que las peticiones de la biblioteca para obtener el contenido web.

solicitud 1.Get

peticiones GET son solicitudes en las peticiones más comunes. Mira un ejemplo:

import requests

r = requests.get("http://httpbin.org/get")
print(r.text)

|#以下为输出内容:
{
  "args": {}, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.18.4", 
    "X-Amzn-Trace-Id": "Root=1-5e7b817a-642ede6f41b26bdf583d312d"
  }, 
  "origin": "120.229.19.26", 
  "url": "http://httpbin.org/get"
}

Lo anterior es una solicitud GET sencilla incluye una solicitud de cabecera resultados devueltos, URL, IP y otra información.

Si desea agregar parámetros en la solicitud y la forma de lograrlo? Parámetros parámetros pueden utilizarse, el parámetro que se añade a un diccionario almacenado hasta entonces pasar params, muestra el siguiente ejemplo:

import requests

data = {
    "name" : "Marty",
    "age" : 18
}
r = requests.get("http://httpbin.org/get", params=data)
print(r.text)

\#以下为输出结果:
{
  "args": {
    "age": "18", 
    "name": "Marty"
  }, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.18.4", 
    "X-Amzn-Trace-Id": "Root=1-5e7b877e-a8afd42005f62ca0e4ef7f20"
  }, 
  "origin": "120.229.19.26", 
  "url": "http://httpbin.org/get?name=Marty&age=18"
}

Pasaremos los parámetros de la petición, se puede ver, los resultados devueltos, solicitud de enlaces construidos de forma automática, la URL se convierte en el " http://httpbin.org/get?name=Marty&age=18 "

Además, vemos que el tipo de páginas de retorno es el tipo str, que es una cadena, pero es formato JSON. Por lo que podemos llamar al método JSON () para analizar obtener un formato de diccionario. Es decir, el método de JSON () puede devolver el resultado es un formato de cadena para transformar el diccionario de JSON.

print(type(r.text))
print(r.json())
print(type(r.json()))
\#以下为输出结果:
<class 'str'>
{'args': {'age': '18', 'name': 'Marty'}, 'headers': {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Host': 'httpbin.org', 'User-Agent': 'python-requests/2.18.4', 'X-Amzn-Trace-Id': 'Root=1-5e7b877e-a8afd42005f62ca0e4ef7f20'}, 'origin': '120.229.19.26', 'url': 'http://httpbin.org/get?name=Marty&age=18'}
<class 'dict'>
  • Rastrear la web

En la página conocida casi 'encontrar', por ejemplo:

import requests
import re

header = {
    'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
}
r = requests.get("http://www.zhihu.com/explore", headers = header)
pattern = re.compile("ExploreRoundtableCard-questionTitle.*?>(.*?)</a>", re.S)
titles = re.findall(pattern, r.text)
print(titles)
\#以下为输出结果:
['有没有萝莉控福音的gal呢?', '如何看待galgame中男主的平行性格?', 'Steam 上有什么优秀的Galgame?', '读完《攀岩人生》,你有什么感想?', '攀岩有何魅力?为什么近两年攀岩运动开始在国内悄悄兴起?', '如果2020年发生了经济危机你会如何应对?', '为什么这么多人想转行做产品经理?', '疫情过后会滋生出新的行业吗?什么产品会火爆?', '为什么找个产品助理的职位都这么难?', '东京奥运会推迟至 2021 年将在多大程度上影响日本经济?会给日本带来多大的经济损失?', '如何看待日本奥委会被曝购买慕尼黑再保险公司的「奥运取消保险」?', '东京奥运会推迟至 2021 年夏天,会给后续产生什么影响?']

Hemos añadido un parámetro en las cabeceras de petición GET, la introducción de este parámetro puede poner nuestro programa disfrazado de un navegador, sin esto, estaría prohibido rastreo.

Este agente de usuario dónde verlo, basta con abrir una página web, compruebe los elementos, y luego seleccionar la red, se puede ver más abajo hay una gran cantidad de entradas, que representan una carga total de esa página para enviar tantas solicitudes al servidor. Casualmente apunta a abrir una entrada, en la parte inferior es el lugar donde el agente de usuario, que contiene el hardware (teléfono o computadora) que utilice, marca, tipo de sistema, el navegador y la otra información. Por supuesto, este argumento no tiene que elegir su propio navegador del ordenador de agente de usuario, que identifica el contenido en línea mucho.

  • Coge datos binarios

      import requests
    
      r = requests.get("https://github.com/favicon.ico")
      print(r.text)
      print(r.content)
      #以下为输出:
      $$ �������������� +++G��������G+++
      b'\x00\x00\x01\x00\x02\x00\x10\x10\x00\x00\x01\x00 \x00(\x05\x00\x00&\x00\x00\x00  \x00\x00\x01\x00 \x00(\x14\x00\x00N\x05\x00\x00(\x00\x00\x00\x10\x00\x00\x00 \x00\x00\x00\x01\x00 \x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
    

Lo anterior es una petición de imagen (pequeño icono en la etiqueta de sitio), las imágenes de archivos de audio y vídeo se compone esencialmente de codificación binaria, hay una conservación específica y los métodos analíticos correspondientes. Así que va a querer tener en sus asentamientos código binario.

R atributos de impresión se pueden ver, R.TEXT resultado es ilegible, y el contenido es un código binario (antes de la oración con una palabra b). Debido a que la imagen es binario, por lo que la impresión se convierte en el tipo str, estar equivocado.

Aquí por el camino de la diferencia entre un texto y contenido. contenido es la fuente original de los datos devueltos. El texto se devuelve a través de los datos codificados.

Disponibles se almacenan y el código de abajo:

import requests
r = requests.get("https://github.com/favicon.ico")
with open("favicon.ico", 'wb') as f:
    f.write(r.content)

Del mismo modo, el audio, el vídeo también se puede obtener de esta manera.





Demasiado sueño para escribir más, el sueño.

Supongo que te gusta

Origin www.cnblogs.com/shuai3290/p/12571921.html
Recomendado
Clasificación