Prueba de reptiles
Creo que todo el mundo ha oído hablar de los rastreadores, pero ¿qué es un rastreador?
Aquí simplemente aplico los resultados de las entradas de Baidu:
网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追
逐者)是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使
用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫
Qué programa de rastreadores
Spider又叫WebCrawler或者Robot,是一个沿着链接漫游Web 文档集合的程序。
它一般驻留在服务器上,通过给定的一些URL,利用HTTP等标准协议读取相应文档,
然后以文档中包括的所有未访问过的URL作为新的起点,继续进行漫游,直到没有
满足条件的新URL为止。WebCrawler的主要功能是自动从Internet上的各Web 站点
抓取Web文档并从该Web文档中提取一些信息来描述该Web文档,为搜索引擎站点
的数据库服务器追加和更新数据提供原始数据,这些数据包括标题、长度、文件建
立时间、HTML文件中的各种链接数目等
Es muy profesional y no sé de
qué estoy hablando cuando lo vi por primera vez. Hablemos de mi propia comprensión:
爬虫程序是一组客户端程序,他的功能是访问web服务器,从服务器中获取网页代码,
网页代码当中包含了许多各种各样的数据信息,程序从中提取我们所关心的数据或是
对我们自己有用的数据,然后通过爬虫程序代码的功能函数实现数据整理并存储在本
地的数据库当中。说的简单点就是偷偷从网页当中获取我们想要的东西
Esto parece bastante simple, pero la dificultad es que a menudo nos resulta difícil armar una página web en la que queremos
completar el formato de datos, por lo que generalmente necesitamos obtener datos de muchos sitios diferentes y una
tasa eficiente de este tipo de datos. Es difícil . Es inútil hablar de tantas teorías. Echemos un
vistazo a los rastreadores
from urllib import request
if __name__ == "__main__":
url = "https://wenku.baidu.com/view/7b93d6c251e79b8969022645.html"
head = {
}
head['User-Agent']='Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36'
req = request.Request(url, headers = head)
response = request.urlopen(req)
html = response.read().decode(' GBK')
print(html)
Imagen del efecto: El siguiente es el código fuente de esta página web. Una
breve mirada a nosotros encontraremos que hemos obtenido exitosamente el código fuente de la página web. ¿Cuál es el User-Agent específico? En
pocas palabras, algunos sitios web no nos permiten rastrear directamente., Tenemos que ocultar la identidad de nuestro rastreador, por lo que usamos un
agente de disfraz . Específicamente, tendremos tiempo para explicar en detalle.
Hoy no estamos hablando de esto. Hoy, aprendamos a usar nuestra computadora como un servidor para rastrear. Datos en su propio servidor
Ante todo
Hagamos un trabajo preparatorio simple
. Descargue algunas bibliotecas flask, re, os, rullib en nuestro compilador (el compilador que uso es pycharm)
Luego crea un archivo txt para guardar algo y guárdalo.
Luego, usa los datos de este archivo para construir un servidor
from flask import Flask,request
import os
app = Flask(__name__)
@app.route("/")
def show():
if os.path.exists("students.txt"):
st = "<table border='1'width='300'>"
fobj = open("students.txt", "rt", encoding="GBK")
while True:
s = fobj.readline().strip("\n")
if s == "":
break
s = s.split(",")
st = st + "<tr>"
for i in range(len(s)):
st = st + "<td>"+s[i] + "</td>"
st = st + "</tr>"
fobj.close()
st = st + "</table>"
return st
if __name__ == "__main__":
app.run()
Echemos un vistazo simple a los resultados de la operación para mostrar
que hemos creado el sitio con éxito y luego ingrese la dirección 127.0.0.1:5000 para ver los resultados mostrados.
Luego, comenzamos a prepararnos para rastrear la información de la página web.
El primer paso es analizar la estructura de la página web y no
es difícil encontrar que esta página se compone de cuatro. Se compone de etiquetas tr, y luego hay cuatro etiquetas td en cada tr, y luego están listas para rastrear. La
primera El paso es usar expresiones regulares
para hacer coincidir los resultados que queremos y generar. Si solo queremos los datos en tr, podemos hacer esto escribir
py r"<tr>.*?</tr>"
De esta manera, podemos obtener los datos en cada etiqueta tr.
Con respecto al aprendizaje de expresiones regulares, puede ir al tutorial novato-sintaxis de expresión regular,
por lo que todo el código es
import urllib.request
import re
try:
resp = urllib.request.urlopen("http://127.0.0.1:5000")
data = resp.read()
html = data.decode()
trs = re.findall(r"<tr>.*?</tr>", html)
for i in trs:
tds = re.findall(r"<td>(.*?)</td>", i)
for j in tds:
print(j, " ", end='')
print()
except Exception as err:
print(err)
El efecto de ejecución del código es el siguiente.
Descubrimos que un pequeño defecto es que el formato de salida no es atractivo y no está alineado, por lo que una simple ola de
modificación del formato de salida
print(j, " ", end='')替换为print("%-4s"%j, " ", end='')
Entonces el resultado de salida se vuelve así
. El significado de "% -4s"% es alinear a la izquierda y cada cadena solo ocupa 4 posiciones para que quede alineada. ¡Otros
formatos más son controlados por Baidu!