Сбор данных из веб-ссылки на список / датафрейм - PullRequest
0 голосов
/ 11 января 2020

У меня есть веб-ссылка, как показано ниже:

https://www.nseindia.com/live_market/dynaContent/live_watch/option_chain/optionKeys.jsp

Я использую приведенный ниже код для сбора данных, но получаю ошибку как:

request.exceptions.ConnectionError: ('Соединение прервано.', OSError ("(10060, 'WSAETIMEDOUT')",))

Мой код:

from requests import Session
import lxml.html

expiry_list = []
try:
    session = Session()
    headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36'}

    session.headers.update(headers)
    url = 'https://www1.nseindia.com/live_market/dynaContent/live_watch/option_chain/optionKeys.jsp'
    params = {'symbolCode': 9999, 'symbol': 'BANKNIFTY', 'instrument': 'OPTIDX', 'date': '-', 'segmentLink': 17}
    response = session.get(url, params=params)
    soup = lxml.html.fromstring(response.text)
    expiry_list = soup.xpath('//form[@id="ocForm"]//option/text()')
    expiry_list.remove(expiry_list[0])
except Exception as error:
    print("Error:", error)

print("Expiry_Date =", expiry_list)

Он отлично работает на моем локальном компьютере, но выдает ошибку в Amazon EC2 Instance. Любые настройки необходимо изменить для разрешения ошибки тайм-аута запроса.

1 Ответ

1 голос
/ 11 января 2020

AWS содержит множество бот-сетей, поэтому в черных списках спама часто перечисляются AWS IP-адреса. Ваш EC2, вероятно, является частью IP-блока, который находится в черном списке. Вы можете проверить это, указав свой * * * * * * * * * * * * * *. Я бы попробовал проверить, если вы даже можете сделать запрос через curl из командной строки curl -v {URL}. Если это произойдет, я уверен, что ваш IP заблокирован правилами брандмауэра удаленного сервера. Поскольку ваш домашний IP-адрес имеет доступ, вы можете попытаться настроить VPN в своей сети, подключить EC2 к вашей VPN и повторить сценарий python. Это должно сработать тогда, но это будет так, как будто вы делаете запрос из своего дома (так что не делайте глупостей). Большинство маршрутизаторов позволяют вам настраивать OpenVPN или PPTP VPN прямо в интерфейсе администратора. Я подозреваю, что когда IP-адрес вашего EC2 изменится, вы обманете вышестоящий сервер и сможете его очистить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...