Prueba de rastreador local

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: Inserte la descripción de la imagen aquíEl siguiente es el código fuente de esta página web. Una
Inserte la descripción de la imagen aquí
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.
Inserte la descripción de la imagen aquí
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
Inserte la descripción de la imagen aquí
que hemos creado el sitio con éxito y luego ingrese la dirección 127.0.0.1:5000 para ver los resultados mostrados.
Inserte la descripción de la imagen aquí
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
Inserte la descripción de la imagen aquí
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!

Supongo que te gusta

Origin blog.csdn.net/qq_41606378/article/details/89304897
Recomendado
Clasificación