Proceso de aprendizaje de solicitudes de Xiaojie + rastreo de información de clasificación top100 de ojo de gato (regular)

Este blog describe cómo rastrear la clasificación, el sitio web y las calificaciones de cateye top100. Usando las solicitudes más básicas de la tecnología de rastreo más la extracción re (regular).

A veces, cuando vemos una película, no sabemos qué película es mejor. Generalmente, abrimos el ranking de películas y tenemos que hacer clic en la página de clasificación de películas. Entonces, si tiene este rastreador, puede obtener directamente el ranking de películas de Cat Eye y su sitio web. ¿No sería divertido?

Abramos primero a la página cat100 top100: https://maoyan.com/board/4?

Luego haga clic en la segunda página: https://maoyan.com/board/4?offset=10

Haga clic en la tercera página: https://maoyan.com/board/4?offset=20

Luego descubrimos que solo cambiando el valor de desplazamiento detrás de la URL se puede lograr el efecto de cambio de página, porque el primer número del lenguaje de programación comienza desde 0, por lo que directamente * 10 escribo un bucle para pasar la página.

Código:

import requests, re, json
from requests.exceptions import RequestException
from my_fake_useragent import UserAgent


def get_one_page(url):
    headers = {
        'User-Agent': UserAgent().random()
    }
    try:
        reponse = requests.get(url, headers=headers)
        if reponse.status_code == 200:
            print("ok!")
        return None
    except RequestException:
        return None


def main(offset):
    url = 'https://maoyan.com/board/4?offset=' + str(offset)
    get_one_page(url)


if __name__ == '__main__':
    for i in range(10):
        main(i * 10)

Resultado de la operación:

C:\Users\User\AppData\Local\Programs\Python\Python37\python.exe G:/Python/code/requeats/try.py
ok!
ok!
ok!
ok!
ok!
ok!
ok!
ok!
ok!
ok!

Parece que se pueden solicitar las diez URL y luego proceder al siguiente paso.

Cuando uso reglas regulares, me gusta ver el código fuente para escribir re, porque el código fuente es el código real cuando se solicita la página web. El código bien ordenado visto en el modo desarrollador F12 es un formato que ha sido procesado posteriormente a través de la representación CSS. Entonces los dos son un poco diferentes.

Hacemos clic derecho para ver el código fuente. Luego CTRL + F para encontrar la parte superior "Adiós mi concubina". Podemos ver esta cadena de código:

 <i class="board-index board-index-1">1</i>
    <a href="/films/1203" title="霸王别姬" class="image-link" data-act="boarditem-click" data-val="{movieId:1203}">

Luego abrimos la página de Farewell My Concubine en su nombre, su URL es: https://maoyan.com/films/1203, y encontramos que su segunda mitad / films / 1203 también está en el código interceptado.

Entonces podemos construir un re: "> (. ?) \ S <a href =" (. ?) "Title =" (. ?) "Class =" image-link ", y cambiar la parte que necesitamos ( , ?), Debido a que el código tiene un salto de línea, agregue \ s al retorno de carro .

PD: No se menciona el uso específico de la regularidad.

Finalmente escriba un archivo TXT.

import requests, re, json
from requests.exceptions import RequestException
from my_fake_useragent import UserAgent


def get_one_page(url):
    headers = {
        'User-Agent': UserAgent().random()
    }
    try:
        reponse = requests.get(url, headers=headers)
        if reponse.status_code == 200:
            return reponse.text
        return None
    except RequestException:
        return None


def parse_one_page(html):
    pattern = re.compile('>(.*?)</i>\s*<a href="(.*?)" title="(.*?)" class="image-link')
    items = re.findall(pattern, html)
    for item in items:
        yield {
            'index': item[0],
            'image': 'http://maoyan.com' + item[1],
            'title': item[2]
        }


def write_to_file(content):
    with open('maoyan.txt', 'a', encoding='UTF-8') as f:
        f.write(json.dumps(content, ensure_ascii=False) + '\n')


def main(offset):
    url = 'https://maoyan.com/board/4?offset=' + str(offset)
    html = get_one_page(url)
    for item in parse_one_page(html):
        print(item)
        write_to_file(item)


if __name__ == '__main__':
    for i in range(10):
        main(i * 10)

 

En general, mi regla es usar xpath con xpath, seguido de re, seguido de bs4. Están escritos de la misma manera que xpath, y se encuentran capa por capa. Pero para los rastreadores generales, no necesitamos ser tan problemáticos para usar la regularización. Encontrar el lugar para rastrear directamente, copiar y cambiar la parte a extraer (, *?) Puede satisfacer completamente las necesidades de los rastreadores comunes, y también es muy rápido.

Arriba acabo de escribir un archivo TXT, si es necesario, puedo cambiar al formato CSV o escribir en la base de datos.

Inserte la descripción de la imagen aquíAquí solo extraje el ranking, la URL y el nombre de la película. Si hay otro contenido de rastreo, agréguelo usted mismo.

10 artículos originales publicados · Me gusta0 · Visitas 52

Supongo que te gusta

Origin blog.csdn.net/z55947810/article/details/105583922
Recomendado
Clasificación