Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 27, 2024 23:33:20

PSAS
Зарегистрирован: 2021-11-13
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Скачивание с внешнего ресурса

Здравствуйте!
При скачивании загружается пустая страница ошибка 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)

Офлайн

#2 Янв. 27, 2024 23:48:24

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9849
Репутация: +  853  -
Профиль   Отправить e-mail  

Скачивание с внешнего ресурса

Ссылку точную напиши без всякого кода.



Офлайн

#3 Янв. 28, 2024 07:53:18

PSAS
Зарегистрирован: 2021-11-13
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Офлайн

#4 Янв. 28, 2024 13:56:27

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Скачивание с внешнего ресурса

Для начала исправь все косяки типа кривых кавычек и переменных
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)

Ну и покажи какю тебе ошибку пишет при запуске скрипта



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Отредактировано ZerG (Янв. 28, 2024 13:57:43)

Офлайн

#5 Янв. 28, 2024 14:16:59

PSAS
Зарегистрирован: 2021-11-13
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Скачивание с внешнего ресурса

Ошибок при этом не возникает, но загружается пустой файл эксель с комментарием
“{”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 "
При этом при открытии напрямую страницы с такой же ссылком загружается файл с данными, возможно как то направить запрос аналогичный через скрипт?

Офлайн

#6 Янв. 28, 2024 18:24:45

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Скачивание с внешнего ресурса

Попробуй с хидерами поиграй
https://scrapeops.io/docs/fake-user-agent-headers-api/fake-browser-headers/



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#7 Янв. 28, 2024 20:01:35

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9849
Репутация: +  853  -
Профиль   Отправить e-mail  

Скачивание с внешнего ресурса

Вот такую ему отправил

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
сработало.

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



Офлайн

#8 Янв. 29, 2024 19:38:43

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1348
Репутация: +  118  -
Профиль   Отправить e-mail  

Скачивание с внешнего ресурса

у меня с такими заголовками сработало

  
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)

Офлайн

#9 Апрель 11, 2024 11:26:54

squeakreproduce
Зарегистрирован: 2024-04-11
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Скачивание с внешнего ресурса

Ошибка сервера 403 (Forbidden Error) означает, что вам запрещен доступ к странице, файлу или папке, URL которых вы ввели в адресной строке.
drift hunters

Отредактировано squeakreproduce (Апрель 11, 2024 11:27:38)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version