
该体现程序员厉害的时候啦~
1.首先,开始分析天天基金网的一些数据。经过抓包分析,可知: ./fundcode_search.js包含所有基金代码的数据。
2.根据基金代码,访问地址: fundgz.1234567.com.cn/js/ + 基金代码 + .js可以获取基金实时净值和估值信息。
3.根据基金代码,访问地址: fundf10.eastmoney.com/FundArchivesDatas.aspx?type=jjcc&code= + 基金代码 + &topline=10&year=2021&month=3可以获取第一季度该基金所持仓的股票。

4.由于这些地址具有反爬机制,多次访问将会失败的情况。所以需要搭建IP代理池,用于反爬。搭建很简单,只需要将proxy_pool这个项目跑起来就行了。
# 通过这个方法就能获取代理
def get_proxy():
return requests.get("http://127.0.0.1:5010/get/").json()
5.搭建完IP代理池后,我们开始着手多线程爬取数据的工作。使用多线程,需要考虑到数据的读写顺序问题。这里使用Python中的队列queue存储基金代码,不同线程分别从这个queue中获取基金代码,并访问指定基金的数据。因为queue的读取和写入是阻塞的,所以可确保该过程不会出现读取重复和读取丢失基金代码的情况。
# 获取所有基金代码
fund_code_list = get_fund_code()
fund_len = len(fund_code_list)
# 创建一个队列
fund_code_queue = queue.Queue(fund_len)
# 写入基金代码数据到队列
for i in range(fund_len)

本文介绍了程序员如何利用Python爬虫技术,从天天基金网获取基金信息,包括基金实时净值、持仓股票,并通过搭建IP代理池解决反爬问题。采用多线程和队列管理数据,将信息存储到云数据库MemFireDB中,最终成功爬取到6432条数据并进行了数据分析。
最低0.47元/天 解锁文章
365





