Python rastreando videos pequeños

URL de destino: vídeo de pera

Este artículo no se hará público y se configurará para que sea visible. ¡Perdóneme!

Luego encontramos la página de tecnología: https://www.pearvideo.com/category_8 . De hecho, cualquier página que desee está bien, siempre que le guste. Jeje ...

Este es un sitio web dinámico, así que vayamos directamente a la red y vayamos a XHR:

Inserte la descripción de la imagen aquí
Encontrar las reglas, esto no debería ser difícil, simplemente publicaré el sitio web directamente, si desea hacer ejercicio, puede encontrarlo: https://www.pearvideo.com/category_loading.jsp?reqType=5&categoryId=8&start=0

Esta es la URL de destino que estamos buscando. El 0 en la parte posterior representa la cantidad de páginas, de modo que cuando abra esta página web, pueda encontrar que es una página web estática. Es mejor hacerlo, simplemente vaya a:

Inserte la descripción de la imagen aquí
el código se muestra a continuación:

import requests
import parsel,re
import os


 
target = "https://www.pearvideo.com/videoStatus.jsp?contId="

url = "https://www.pearvideo.com/category_loading.jsp?reqType=5&categoryId=9&start=0"
res = requests.get(url)
res.encoding="utf-8"
html = parsel.Selector(res.text)
lists = html.xpath('/html/body/li/div/a/@href').getall()
for each in lists:

    print("https://www.pearvideo.com/"+each)

output;
https://www.pearvideo.com/video_1703486
https://www.pearvideo.com/video_1703189
https://www.pearvideo.com/video_1703161
https://www.pearvideo.com/video_1702880
https://www.pearvideo.com/video_1702773
...

Lo obtuve sin problemas y luego ingresé a la página de reproducción, pero descubrí que no podía encontrar el video MP4, ¿qué debo hacer? Después de mucho esfuerzo (después de arrancar decenas de pelos), descubrí que estaba en otro sitio web.

Inserte la descripción de la imagen aquí
¿Qué hacer? Por supuesto, tenemos que encontrar una manera de obtener esta URL. Después de un análisis cuidadoso, descubrimos que esta URL es muy desconocida. Lo único que nos resulta un poco familiar es la cadena de números. La cadena de números detrás de la URL de la página de reproducción que obtuvimos anteriormente se compara con esto. Son exactamente iguales. Si este es el caso, será fácil. Vamos a conectarlo empalmando. Mira el código:

for each in lists:
    url_num = each.replace('video_',"")
    urls = target+url_num
    print(urls)
``

```python
output:
https://www.pearvideo.com/videoStatus.jsp?contId=1703486
https://www.pearvideo.com/videoStatus.jsp?contId=1703189
https://www.pearvideo.com/videoStatus.jsp?contId=1703161
https://www.pearvideo.com/videoStatus.jsp?contId=1702880
https://www.pearvideo.com/videoStatus.jsp?contId=1702773
https://www.pearvideo.com/videoStatus.jsp?contId=1702633
...

Está saliendo, parece un poco diferente, qué hay detrás & mrd = ***************** No, ¿qué debo hacer? Si no tienes uno, no cantes. Los amigos que han leído la imagen de Baidu que publiqué entienden que hay algunas cosas en la URL que son innecesarias. Es puramente para nosotros jugar a los rastreadores y darnos asco. Pero de ninguna manera, después de todo, vamos a rastrear los datos de otras personas.

El problema de la URL se resolvió, pero hice clic y encontré esto:

Inserte la descripción de la imagen aquí

Bueno, obviamente, nos hemos encontrado con el mecanismo anti-escalada. Esto es fácil de hacer. Solo da lo que quieras. El código es el siguiente:

	headers = {
    
    
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36',
    'Referer': 'https://www.pearvideo.com/video_'+ str(url_num)
    }
    html = requests.get(urls,headers=headers).text
    print(html)

Inserte la descripción de la imagen aquí
¡Hazlo! !

Finalmente, veamos si se puede reproducir MP4: ¡
Inserte la descripción de la imagen aquí
West Eight! 404! ! Bueno, es un poco problemático aquí. Tengo que encontrar los datos y cambiar la marca de tiempo dentro de 'cont-number'. Siento que he escrito mucho y mis manos están un poco cansadas, así que cargué el código directamente:


import requests
import parsel,re
import os


 
target = "https://www.pearvideo.com/videoStatus.jsp?contId="

url = "https://www.pearvideo.com/category_loading.jsp?reqType=5&categoryId=9&start=0"
res = requests.get(url)
res.encoding="utf-8"
html = parsel.Selector(res.text)
lists = html.xpath('/html/body/li/div/a/@href').getall()
# print(lists[2:])
# 提取视频后面的数字,数字是最重要的,需要传给 Referer 和 urls
for each in lists:
    url_num = each.replace('video_',"")
    urls = target+url_num
    # print(urls)
    headers = {
    
    
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36',
    'Referer': 'https://www.pearvideo.com/video_'+ str(url_num)
    }
    html = requests.get(urls,headers=headers).text
   
    cont = 'cont-' + str(url_num)

    # 提取 mp4 视频
    srcUrl = re.findall(f'"srcUrl":"(.*?)"',html)[0]
    # 替换视频里面的时间戳,改为可以真正播放的数据
    new_url = srcUrl.replace(srcUrl.split("-")[0].split("/")[-1],cont)
    print(new_url)
    

    # 使用视频后缀当视频名称
    filename = srcUrl.split("/")[-1]

    # 保存到本地
    with open("./images/"+filename,"wb") as f:
        f.write(requests.get(new_url).content)

Inserte la descripción de la imagen aquí

Si no entiende nada, puede dejar un mensaje y todos pueden comunicarse juntos

Supongo que te gusta

Origin blog.csdn.net/weixin_51211600/article/details/109289024
Recomendado
Clasificación