首页 > 解决方案 > 麻烦 Webscraping 寻求 alpha

问题描述

我正在编写一个脚本,该脚本使用 python 和 anaconda 虚拟环境对特定股票代码的 alpha 追随者数据进行网络抓取。我以前曾就此提出过问题,我收到的答案在一定程度上有所帮助。由于某种原因,当我尝试通过在列表中添加更多内容或更改代码名称来更改代码名称时,代码会立即失败,而其他时候它可以正常工作。我想知道是否有人对我的代码有任何建议/编辑,或任何其他获取这些数据的方法。附件是我的代码和输出

代码:

import requests
tickers = [ "atvi", "goog", "aapl", "amzn", "brk.b", "brk.a", "nflx", "snap"]

with requests.Session() as s:
    for ticker in tickers:
        r = s.get('https://seekingalpha.com/memcached2/get_subscribe_data/{}?id={}'.format(ticker, ticker)).json()
        print(ticker, r['portfolio_count'])

输出: 这是我收到的输出错误

其他时候它有效,这就是它应该看起来的样子

标签: pythonweb-scraping

解决方案


如果您输入了错误的股票代码或服务器在处理您的请求时遇到问题,它会返回空答案并将状态代码设置为不同于200(例如403)的内容。您需要检查该信息:

import requests
tickers = [ "xxx", "atvi", "goog", "aapl", "amzn", "brk.b", "brk.a", "nflx", "snap"]

with requests.Session() as s:
    for ticker in tickers:
        response = s.get('https://seekingalpha.com/memcached2/get_subscribe_data/{}?id={}'.format(ticker, ticker))
        if response.status_code != 200:
            print(ticker, 'ERROR!')
            continue
        r = response.json()
        print(ticker, r['portfolio_count'])

印刷:

xxx ERROR!
atvi 84,194
goog 1,038,749
aapl 2,076,496
amzn 817,339
brk.b 198,362
brk.a 74,682
nflx 368,925
snap 95,903

推荐阅读