关键词搜索

源码搜索 ×
×

Python 爬取每日北上资金数据

发布2021-08-28浏览842次

详情内容

北上资金一直被誉为“聪明钱”,擅长左侧交易。现在很多机构和大户都会盯着北上资金调整自己的交易。这似乎已经是公开的秘密了。香港证券交易python教程所每天收盘都会公布当天北上资金的持股量,所以我们也可以爬取这份数据抄一抄北上资金的作业。

我们分别爬取沪港通和深港通的数据,然后再将两个 dataframe 合并起来,并保存为 csv 文件。

好了,不多说了上代码吧。

Code


  1. import urllib.request, urllib.parse, urllib.error
  2. from bs4 import BeautifulSoup
  3. import ssl
  4. import pandas as pd
  5. # Ignore SSL certificate errors
  6. ctx = ssl.create_default_context()
  7. ctx.check_hostname = False
  8. ctx.verify_mode = ssl.CERT_NONE
  9. urls = ['https://sc.hkexnews.hk/TuniS/www.hkexnews.hk/sdw/search/mutualmarket_c.aspx?t=sh&t=sh',
  10. 'https://sc.hkexnews.hk/TuniS/www.hkexnews.hk/sdw/search/mutualmarket_c.aspx?t=sh&t=sz']
  11. dates = []
  12. df_list = []
  13. for url in urls:
  14. html = urllib.request.urlopen(url, context=ctx).read()
  15. soup = BeautifulSoup(html, 'lxml')
  16. date = soup.find('input', class_='input-searchDate')['value']
  17. dates.append(date)
  18. codes = [code.find('div', class_='mobile-list-body').string for code in soup.find_all('td',class_='col-stock-code')]
  19. names = [name.find('div', class_='mobile-list-body').string for name in soup.find_all('td',class_='col-stock-name')]
  20. shareholding = [int(shareholding.find('div', class_='mobile-list-body').string.replace(',', '')) for shareholding in soup.find_all('td',class_='col-shareholding')]
  21. percent = [float(percent.find('div', class_='mobile-list-body').string.strip('%')) for percent in soup.find_all('td',class_='col-shareholding-percent')]
  22. df = pd.DataFrame(list(zip(codes, names, shareholding, percent)), columns=['code', 'stock', 'shareholding', 'shareholding%'])
  23. df_list.append(df)
  24. output = pd.DataFrame()
  25. if dates[0] == dates[1]:
  26. # combine dataframe sz and dataframe sh
  27. output = pd.concat(df_list)
  28. output.to_csv(fname, encoding='utf-8', index=False)
  29. else:
  30. print('failed to get northbound data from web')

作者:Yuki

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载