【问题标题】:Collect Data from web link to List/Dataframe从 Web 链接收集数据到列表/数据框
【发布时间】:2020-04-28 19:54:51
【问题描述】:

我有一个网页链接如下:

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

我使用下面的代码来收集数据但得到错误:

requests.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 实例中出现错误需要更改任何设置以解决请求超时错误。

【问题讨论】:

  • 您错过了headersresponse = requests.get(url,headers=headers).json()。该站点正在检查请求标头中的User-Agent
  • 哦,对不起。但是我已经添加了它(headers=headers),但在我的 Amazon EC2 实例中仍然出现同样的错误。

标签: python python-3.x pandas web-scraping request


【解决方案1】:

AWS 包含大量僵尸网络,因此垃圾邮件黑名单经常列出 AWS IP。您的 EC2 可能是列入黑名单的 IP 块的一部分。您可以通过将您的公共 EC2 IP 放在这里 https://mxtoolbox.com/ 来进行验证。我会尝试验证您是否甚至可以从命令行curl -v {URL} 通过 curl 发出请求。如果超时,那么我敢打赌你的 IP 被远程服务器的防火墙规则阻止了。由于您的家庭 IP 可以访问,您可以尝试在您的网络上设置 VPN,让 EC2 连接到您的 VPN,然后重试您的 python 脚本。那时它应该可以工作,但是就好像您是从家里发出请求一样(所以不要做任何愚蠢的事情)。大多数路由器允许您直接在管理 UI 中设置 OpenVPN 或 PPTP VPN。我怀疑一旦你的 EC2 的 IP 发生变化,你就会欺骗上游服务器并能够抓取。

【讨论】:

  • 先生,有没有其他方法可以从链接中收集数据。
  • 如果远程服务器阻止了您的 EC2 的 IP 地址,那么您的选择将受到限制。您将需要绕过他们的防火墙。您可以尝试其他托管服务。如果您尝试抓取股票报价,那么尝试抓取另一个不会阻止您的网站可能会更容易。
猜你喜欢
  • 1970-01-01
  • 2012-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-21
  • 1970-01-01
相关资源
最近更新 更多