Найти - Пользователи
Полная версия: Скачивание с внешнего ресурса
Начало » Python для новичков » Скачивание с внешнего ресурса
1
PSAS
Здравствуйте!
При скачивании загружается пустая страница ошибка 403 сервера, при открытии с браузера ОК.


import datetime, requests

date = (datetime.datetime.today()- datetime.timedelta(days=2)).strftime(“%Y%m%d”)
EUR_L="https://www.cmegroup.com/CmeWS/exp/voiProductDetailsViewExport.ctl?media=xls&tradeDate=“+date+”&reportType=“+RT+”&productId=58“
EUR = requests.get(EUR_L,headers={'User-Agent': ‘Mozilla/5.0’})
with open(output_path +”EUR.xls", ‘wb’) as f: f.write(EUR.content)

py.user.next
Ссылку точную напиши без всякого кода.
ZerG
Для начала исправь все косяки типа кривых кавычек и переменных
import datetime, requests

 date = (datetime.datetime.today()- datetime.timedelta(days=2)).strftime("%Y%m%d")
EUR_L=f"https://www.cmegroup.com/CmeWS/exp/voiProductDetailsViewExport.ctl?media=xls&tradeDate={date}&reportType=P&productId=58"
print(f"Url: {EUR_L}")
EUR = requests.get(EUR_L,headers={'User-Agent': 'Mozilla/5.0'})
with open(output_path +"EUR.xls", "wb") as f:
    f.write(EUR.content)

Ну и покажи какю тебе ошибку пишет при запуске скрипта
PSAS
Ошибок при этом не возникает, но загружается пустой файл эксель с комментарием
“{”message“: ”This IP address is blocked due to suspected web scraping activity associated with it on this CMEgroup.com page. Use of scripts, software, spiders, robots, avatars, agents, tools or other scraping "
При этом при открытии напрямую страницы с такой же ссылком загружается файл с данными, возможно как то направить запрос аналогичный через скрипт?
ZerG
Попробуй с хидерами поиграй
https://scrapeops.io/docs/fake-user-agent-headers-api/fake-browser-headers/
py.user.next
Вот такую ему отправил
curl -A "Firefox/119" -H "Accept-Encoding: x" "https://www.cmegroup.com/CmeWS/exp/voiProductDetailsViewExport.ctl?media=xls&tradeDate=20240126&reportType=P&productId=58" -o VoiDetailsForProduct.xls
сработало.

Нет там защиты никакой особо. Просто тупая проверка какая-то.
xam1816
у меня с такими заголовками сработало

  
import requests
session = requests.session()
url = 'https://www.cmegroup.com/CmeWS/exp/voiProductDetailsViewExport.ctl'
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.9',
'accept-language': 'ru,en;q=0.9,fr;q=0.8',
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.141 YaBrowser/22.3.3.889 Yowser/2.5 Safari/537.36'
}
payload = {'media':'xls',
    'tradeDate':'20240126',
    'reportType':'P',
    'productId':'58'
}
resp = session.get(url, params=payload, headers=headers)
with open('download_file.xls', 'wb') as wf:
    wf.write(resp.content)
squeakreproduce
Ошибка сервера 403 (Forbidden Error) означает, что вам запрещен доступ к странице, файлу или папке, URL которых вы ввели в адресной строке.
drift hunters
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB