Как найти ссылку для скачивания файла?

requests для того чтобы скачать файл нужна ссылка на файл. На сайте https://mcbuild.org/schematics/18505:tavern есть кнопка(Download) для установки файла ,при нажатии на эту кнопку пользователя кидает на сайт https://mcbuild.org/download/schematic=18505 и на нем файл сам скачивается и у меня не получается найти ссылку файла чтобы его установить . Пытался ,искал, гуглил, много ссылок на сайте проверил изо маленького опыта в этом вопросе не знаю как решить проблему толи там скрытый API надо использовать или как то другим способом подскажите буду благодарен .


Ответы (2 шт):

Автор решения: Romanus

вот рабочий код:

И советую сайт https://curlconverter.com/python/ посмотрите для чего он понадобится.

def download_file():    
    try:
        cookies = {
            '_ga': 'GA1.1.181025297.1713956099',
            '_pk_id.78.90ce': 'eff7a471c03e4887.1713956100.',
            'PHPSESSID': 'd04933f9eabea1b76bfd1247fb31f270',
            '_pk_ses.78.90ce': '1',
            '_ga_PT57S4LEXC': 'GS1.1.1714573040.18.1.1714573303.0.0.0',
            'FCNEC': '%5B%5B%22AKsRol-5DouioWBi4EHE9XuU6m0GRGrn5Fp7cpBM23AMwbaFWwhvpE1hd7PFOtzKhW8mZ190hL75xunqYeTtZJsubx9tCxP2ej_Q-LpH5V9hFLggtgLVDq3560la15Iy3rFbxA8Au2MyEoj08ok7UbpjpxAy8dXoGA%3D%3D%22%5D%5D',
            '__gads': 'ID=2c17f14da703eb96:T=1713956101:RT=1714573351:S=ALNI_MYWB4XIXp5dIiU4sWQigy7hWVbIWg',
            '__gpi': 'UID=00000dfdb98c2625:T=1713956101:RT=1714573351:S=ALNI_Mb0ZgMl2axV8rOhTX1js0iV5JdCVg',
            '__eoi': 'ID=2aa11ed4288f8e9b:T=1713956101:RT=1714573351:S=AA-AfjbfMART8WjkvaR2nKyUDjbu',
        }

        headers = {
            'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
            'accept-language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
            'cache-control': 'max-age=0',
            # 'cookie': '_ga=GA1.1.181025297.1713956099; _pk_id.78.90ce=eff7a471c03e4887.1713956100.; PHPSESSID=d04933f9eabea1b76bfd1247fb31f270; _pk_ses.78.90ce=1; _ga_PT57S4LEXC=GS1.1.1714573040.18.1.1714573303.0.0.0; FCNEC=%5B%5B%22AKsRol-5DouioWBi4EHE9XuU6m0GRGrn5Fp7cpBM23AMwbaFWwhvpE1hd7PFOtzKhW8mZ190hL75xunqYeTtZJsubx9tCxP2ej_Q-LpH5V9hFLggtgLVDq3560la15Iy3rFbxA8Au2MyEoj08ok7UbpjpxAy8dXoGA%3D%3D%22%5D%5D; __gads=ID=2c17f14da703eb96:T=1713956101:RT=1714573351:S=ALNI_MYWB4XIXp5dIiU4sWQigy7hWVbIWg; __gpi=UID=00000dfdb98c2625:T=1713956101:RT=1714573351:S=ALNI_Mb0ZgMl2axV8rOhTX1js0iV5JdCVg; __eoi=ID=2aa11ed4288f8e9b:T=1713956101:RT=1714573351:S=AA-AfjbfMART8WjkvaR2nKyUDjbu',
            'priority': 'u=0, i',
            'referer': 'https://mcbuild.org/schematics/14495:amphitheatre-arena',
            'sec-ch-ua': '"Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"',
            'sec-ch-ua-mobile': '?0',
            'sec-ch-ua-platform': '"Windows"',
            'sec-fetch-dest': 'document',
            'sec-fetch-mode': 'navigate',
            'sec-fetch-site': 'same-origin',
            'sec-fetch-user': '?1',
            'upgrade-insecure-requests': '1',
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36',
        }

        response = requests.get('https://mcbuild.org/download/schematic=14495', cookies=cookies, headers=headers)
        soup = BeautifulSoup (response.text,'lxml')
        file_url = str(soup.find_all('script')[3]).split("'")[1]


        response = requests.get(f"https://mcbuild.org{file_url})", headers={'Referer': 'https://mcbuild.org/download/schematic=14495'})        
        with open('req.schematic', 'wb') as file:
            file.write(response.content)

    except Exception as _ex:
        return 'Upps... Check the URL please!'
→ Ссылка
Автор решения: Сергей Ш
import re
import requests

url = 'https://mcbuild.org/schematics/18505:tavern'
response = requests.get('https://mcbuild.org/download/schematic=14495', headers={'Referer': url})
file_url = re.findall(r"'/download[^']*'", response.text)[0][1:-1]
response = requests.get(f"https://mcbuild.org{file_url})", headers={'Referer': response.url})
with open('req.schematic', 'wb') as file:
    file.write(response.content)
→ Ссылка