d8349565 发表于 2021-5-14 14:28

爬取“在线之家”

本帖最后由 d8349565 于 2021-5-14 14:30 编辑

闲来无事,把之前一直爬不到视频直链的在线之家又捣鼓了一次,成功获取。(代码暂未优化,分享着玩)
主要是从主页开始爬,有兴趣可以自己定义。

import requests
import re
import time
import base64
from lxml import etree

# 从主页获取各影视的url
def next_page(start_url):
    headers = {
      "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"}
    response = requests.post(start_url, headers=headers)
    content = etree.HTML(response.text)
    link = content.xpath('/html/body/div/div//ul/li/div/a/@href')
    # name = content.xpath('/html/body/div/div//ul/li/div/a/@title')
    return link

# 获取需要post的url(用来post获取视频地址)
def get_post_link(next_page):
    headers = {
      "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"}
    response = requests.post(next_page, headers=headers)
    result = re.findall("url\":\"(.*?)\",", response.text)
    link = result.replace('\\','')
    return link

def get_num(url,referer):
    headers = {
      "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
      'referer': referer}
    # print(url)
    response = requests.post(url, headers=headers)
    response.encoding = response.apparent_encoding

    result = re.findall("time=(.*?)&", response.text)
    # print(result)
    return result

# 带上referer post获取 加密的url信息
def get_vd_url (url,referer):
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
               'referer': referer}
    # print(url)
    response = requests.post(url, headers=headers)
    response.encoding = response.apparent_encoding
    result = re.findall("var url =(.*?),",response.text)
    return result

# 加密的url信息逆序(十六进制)
def Reverse_order(result):
    b = list(result)
    b.reverse()
    re_result = ''.join(b)
    returnre_result

# 获取其他集数的url
def url_next(url):
    headers = {
      "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"}
    response = requests.post(url, headers=headers)
    content = etree.HTML(response.text)
    link = content.xpath('//*[@id="play-box"]/div/div/div/ul/li/a/@href')
    link =
    return link
    # print(link)


if __name__ == '__main__':
    link_list = next_page('https://www.zxzj.me/')
    link_list =
    # print(link_list)
    for url in link_list:
      referer = url_next(url)
      # print(referer)
      for url_1 in referer:
            # print(url_1)
            referer_1 = get_post_link(url_1)
            # print(referer_1)
            result = get_vd_url(referer_1,url_1)
            num = get_num(referer_1,url_1)
            # print(result)
            result = Reverse_order(result).replace("'","").strip()
            # 解密十六进制
            a = base64.b16decode(result)
            # print(a)
            a = str(a, encoding="utf-8")
            # num 是与日期相关的数字,估计经常需要更换
            a = a.replace(num,'',1).strip()
            # print(f"b'{a}")
            print(a)

d8349565 发表于 2021-5-16 22:31

出尘雨 发表于 2021-5-15 18:36
大哥,获取的直链基本过段时间就变了,是怎么处理的呀?

变化也是有规则的呀,我看在线之家好像是有个关于时间规则的数字,比如“162092”,会随机出现在直链的某些文字中间。(162092在post的时候可以找到)我就设置了num等于这一串数字,时间更新也不影响。

d8349565 发表于 2021-5-17 13:13

ChipunNG 发表于 2021-5-17 10:28
楼主是怎么判断是十六进制逆序的呢?凭经验吗

https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=1298479&pid=34962861

论坛里面的人给的方案,我自己估计也是一时半会找不出来

pojie666 发表于 2021-5-14 14:55

今天下载了黑马的python,想开始学习,看到这样的我希望我也有这一天

fanvalen 发表于 2021-5-14 18:33

你这headers一样放全局就好,不用复制那么多

chenruiqian 发表于 2021-5-15 08:25

pojie666 发表于 2021-5-14 14:55
今天下载了黑马的python,想开始学习,看到这样的我希望我也有这一天

可以分享一下黑马python的视频吗? 百度云 天翼云都可以,谢谢了{:1_893:}

出尘雨 发表于 2021-5-15 18:36

大哥,获取的直链基本过段时间就变了,是怎么处理的呀?

ChipunNG 发表于 2021-5-17 10:28

楼主是怎么判断是十六进制逆序的呢?凭经验吗

依旧沉沉 发表于 2021-5-17 10:52

ChipunNG 发表于 2021-5-17 10:28
楼主是怎么判断是十六进制逆序的呢?凭经验吗

同问同问~

fangqiezi 发表于 2021-5-17 17:56

大佬, 可以分享下爬取网站下的所有链接吗
页: [1] 2
查看完整版本: 爬取“在线之家”