1:首先,开始分析天天基金网的一些数据。经过抓包分析,可知: ./fundcode_search.js包含所有基金的数据,同时,该地址具有反爬机制,多次访问将会失败的情况。

2:同时,经过分析可知某只基金的相关信息地址为:fundgz.1234567.com.cn/js/ + 基金代码 + .js

3:分析完天天基金网的数据后,搭建IP代理池,用于反爬作用。

# 返回一个可用代理,格式为ip:端口def get_proxy():

data_json= requests.get("http://proxy.1again.cc:35050/api/v1/proxy/?type=2").text

data=json.loads(data_json)return data['data']['proxy']

4:搭建完IP代理池后,我们开始着手多线程爬取数据的工作。一旦使用多线程,则需要考虑到数据的读写顺序问题。这里使用python中的队列queue进行存储基金代码,不同线程分别从这个queue中获取基金代码,并访问指定基金的数据。

# 将所有基金代码放入先进先出FIFO队列中

# 队列的写入和读取都是阻塞的,故在多线程情况下不会乱

# 在不使用框架的前提下,引入多线程,提高爬取效率

# 创建一个队列

fund_code_queue=queue.Queue(len(fund_code_list))

# 写入基金代码数据到队列for i inrange(len(fund_code_list)):

#fund_code_list[i]也是list类型,其中该list中的第0个元素存放基金代码

fund_code_queue.put(fund_code_list[i][0])

5:现在,开始编写如何获取指定基金的代码。

# 获取基金数据

def get_fund_data():

# 当队列不为空时while(not fund_code_queue.empty()):

# 从队列读取一个基金代码

# 读取是阻塞操作

fund_code= fund_code_queue.get()

# 获取一个代理,格式为ip:端口

proxy=get_proxy()

# 获取一个随机user_agent和Referer

header= {'User-Agent': random.choice(user_agent_list),'Referer': random.choice(referer_list)

}try:

req= requests.get("http://fundgz.1234567.com.cn/js/" + str(fund_code) + ".js", proxies={"http": proxy}, timeout=3, headers=header)

except Exception:

# 访问失败了,所以要把我们刚才取出的数据再放回去队列中

fund_code_queue.put(fund_code)

print("访问失败,尝试使用其他代理访问")

6:当访问成功时,则说明能够成功获得基金的相关数据。当我们在将这些数据存入到一个.csv文件中,会发现数据出现错误。这是由于多线程导致,由于多个线程同时对该文件进行写入,导致出错。所以需要引入一个线程锁,确保每次只有一个线程写入。

# 申请获取锁,此过程为阻塞等待状态,直到获取锁完毕

mutex_lock.acquire()

# 追加数据写入csv文件,若文件不存在则自动创建

with open('./fund_data.csv', 'a+', encoding='utf-8') ascsv_file:

csv_writer=csv.writer(csv_file)

data_list= [x for x indata_dict.values()]

csv_writer.writerow(data_list)

# 释放锁

mutex_lock.release()

7:至此,大部分工作已经完成了。为了更好地实现伪装效果,我们对header进行随机选择。

# user_agent列表

user_agent_list=['Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)','Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.3.4000 Chrome/30.0.1599.101 Safari/537.36','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.0.3214.0 Safari/537.36']

# referer列表

referer_list=['http://fund.eastmoney.com/110022.html','http://fund.eastmoney.com/110023.html','http://fund.eastmoney.com/110024.html','http://fund.eastmoney.com/110025.html']

# 获取一个随机user_agent和Referer

header= {'User-Agent': random.choice(user_agent_list),'Referer': random.choice(referer_list)

}

8:最后,在main中,开启线程即可。

# 创建一个线程锁,防止多线程写入文件时发生错乱

mutex_lock=threading.Lock()

# 线程数为50,在一定范围内,线程数越多,速度越快for i in range(50):

t= threading.Thread(target=get_fund_data,name='LoopThread'+str(i))

t.start()

数据格式

000056,建信消费升级混合,2019-03-26,1.7740,1.7914,0.98,2019-03-27 15:00

000031,华夏复兴混合,2019-03-26,1.5650,1.5709,0.38,2019-03-27 15:00

000048,华夏双债增强债券C,2019-03-26,1.2230,1.2236,0.05,2019-03-27 15:00

000008,嘉实中证500ETF联接A,2019-03-26,1.4417,1.4552,0.93,2019-03-27 15:00

000024,大摩双利增强债券A,2019-03-26,1.1670,1.1674,0.04,2019-03-27 15:00

000054,鹏华双债增利债券,2019-03-26,1.1697,1.1693,-0.03,2019-03-27 15:00

000016,华夏纯债债券C,2019-03-26,1.1790,1.1793,0.03,2019-03-27 15:00

python爬取基金股票_爬取天天基金网、股票数据相关推荐

  1. python爬取豆瓣短评_爬取并简单分析豆瓣电影短评

    导语 利用Python爬取并简单分析豆瓣电影短评. 说起来挺逗的,去年爬豆瓣短评的时候还是可以爬个几万条数据的,昨天我还想着终于可以起个唬人的标题了,什么爬取了xxx电影的xxx万条数据. 于是昨晚写 ...

  2. python爬取文献代码_爬取Pubmed文献及影响因子并尝试下载的脚本

    Abstract 本脚本实现了通过Biopython爬取pubmed文献资料,并通过scholarscope爬取影响因子数据,最后尝试通过sci-hub下载文献,三位一体的方法. Introducti ...

  3. python爬取文章保存_爬取博主所有文章并保存到本地(.txt版)--python3.6

    闲话: 一位前辈告诉我大学期间要好好维护自己的博客,在博客园发布很好,但是自己最好也保留一个备份. 正好最近在学习python,刚刚从py2转到py3,还有点不是很习惯,正想着多练习,于是萌生了这个想 ...

  4. python爬取今日头条_爬取今日头条街拍图片

    参考于崔庆才的Python爬虫教程,但是崔的视频时间过长,今日头条网站反爬虫也有了变化,因此写下此文章来记录自己的爬取过程遇到的问题,也给大家一些借鉴.欢迎大家讨论. 一.获取索引页. 我们会发现do ...

  5. python爬去朋友圈_爬取朋友圈的内容

    伪君子 读完需要 12 分钟速读仅需 3 分钟 0 前言 爬取朋友圈的办法还是有很多的,今天我来介绍一下我最近发现的一个办法. 需要的是一台安卓手机,一台 Windows 电脑(ios + Mac 也 ...

  6. python xpath爬取新闻标题_爬取知乎热榜标题和连接 (python,requests,xpath)

    用python爬取知乎的热榜,获取标题和链接. 环境和方法:ubantu16.04.python3.requests.xpath 1.用浏览器打开知乎,并登录 2.获取cookie和User-Agen ...

  7. python 爬取搞笑视频_爬取搞笑视频

    最近小编经常刷知乎上的一个问题"你见过哪些是「以为是个王者,结果是个青铜」的视频或图片?".从这个问题我们就已经可以看出来里面的幽默成分了,点进去看果然是笑到停不下来.于是,我想一 ...

  8. python爬虫爬取今日头条_爬取今日头条头条号文章数据

    0,背景介绍 最近想爬取一些今日头条的文章浏览数据,分析哪些头条号做的好,那些做的不好. 今日头条 比如上图的阅读数,评论数以及文章标题,通过这些数据进行分析. 于是展开了艰难的爬虫探索之旅 第一目标 ...

  9. python爬取百度迁徙动态图_爬取动态图片—以百度图片为例

    一:何谓动态加载图片 所谓动态加载图片即指html刚加载时,图片时没有的,然后通过json发生有关图片的数据,在插入到html里面去,以到底快速打开网页的目的,那么问题来了?我们如何找到加载文件的js ...

最新文章

  1. C++:Lambda函数学习
  2. 【深度学习】(8) CNN中的通道注意力机制(SEnet、ECAnet),附Tensorflow完整代码
  3. BCH期货要来了?这家公司想让BCH成为第二大加密货币
  4. 鸿蒙系统低端机推行,华为正在考虑少量推行搭载鸿蒙系统的中低端手机,有望年底推出!...
  5. 突发公共事件应急管理 新闻网站集
  6. 8086的两种工作模式_Lora自组网网关的两种工作模式
  7. Android 小项目之--数据存储【Network】(附源码)
  8. 串口调试助手 rtc 显示时间_闪电侠串口网络调试助手
  9. 实例50:python
  10. NameError: name 'long' is not defined
  11. 在dom最前面插入_前端性能优化之dom编程
  12. 解决vs2005中文乱码问题
  13. weblogic部署方式
  14. jquery-easyui中表格的行编辑功能
  15. nginx: 编写简单handler模块
  16. ZeroMQ接口函数之 :zmq_ipc – ZMQ本地进程间通信传输协议
  17. oracle密码已过期问题解决
  18. matlab求解极限问题(limit函数的用法)
  19. 用ip地址远程登录linux的软件,如何远程登陆已知 IP地址的电脑?
  20. 计算机专业班级网站,计算机专业班级标语

热门文章

  1. Adobe illustrator插件开发-所有模块列表-内部存在大量非公开的Suite-AI插件开发
  2. mdadm使用 移除raid
  3. c# 发邮件时发送会议邀请icalendar包括更新以及取消
  4. java 邮件提醒功能_利用ical4j和javamail发送会议邀请实现邮件发送提醒功能
  5. bootstrap——使用Ajax获取数据填充到模态框表单中(包含radio选中)
  6. TikTok广告实操案例数据分析(一)
  7. 如何无需开发集成易快报、金蝶等第三方应用
  8. vue项目关闭prettier尾随逗号问题
  9. 国防科大计算机考博大纲,2020年国防科技大学数字信号处理考博大纲
  10. Linux安装apache