前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入

多线程+代理池爬取天天基金网、股票数据(无需使用爬虫框架)

简介

提到爬虫,大部分人都会想到使用Scrapy工具,但是仅仅停留在会使用的阶段。为了增加对爬虫机制的理解,我们可以手动实现多线程的爬虫过程,同时,引入IP代理池进行基本的反爬操作。

本次使用天天基金网进行爬虫,该网站具有反爬机制,同时数量足够大,多线程效果较为明显。

技术路线

IP代理池

多线程

爬虫与反爬

编写思路

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

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

分析完天天基金网的数据后,搭建IP代理池,用于反爬作用。搭建代理池,由于该作者提供了一个例子,所以本代码里面直接使用的是作者提供的接口。如果你需要更快速的获取到普匿IP,则可以自行搭建一个本地IP代理池。

搭建完IP代理池后,我们开始着手多线程爬取数据的工作。一旦使用多线程,则需要考虑到数据的读写顺序问题。这里使用python中的队列queue进行存储基金代码,不同线程分别从这个queue中获取基金代码,并访问指定基金的数据。由于queue的读取和写入是阻塞的,所以可以确保该过程不会出现读取重复和读取丢失基金代码的情况。

现在,开始编写如何获取指定基金的代码。首先,该函数必须先判断queue是否为空,当不为空的时候才可进行获取基金数据。同时,当发现访问失败时,则必须将我们刚刚取出的基金代码重新放回到队列中去,这样才不会导致基金代码丢失。

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

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

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

通过对多线程和IP代理池的实践操作,能够更加深入了解多线程和爬虫的工作原理。当你在使用一些爬虫框架的时候,就能够做到快速定位错误并解决错误。

数据格式

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. 使用CefSharp动态爬取天天基金网历史基金数据——数据存储(二)

    初步爬取到需要的数据之后,需要将数据存储到外部文件中以方便数据处理.本文中采用Excel存储爬取到的数据内容.与本次设计的数据爬取采用C#中的DataGrid进行显示,爬取指定基金号码的历史基金数据, ...

  2. python爬取天天基金网全部基金的历史全部净值

    ** 天天基金网历史净值爬取 ** ** 1.认识天天基金网的数据接口 1,这是所有基金代码.基金名称简称的集合http://fund.eastmoney.com/js/fundcode_search ...

  3. 使用CefSharp动态爬取天天基金网历史基金数据——动态爬取(一)

    确保安装CefSharp软件包,相关安装步骤可以自行搜索 CefSharp相关信息可在网上搜索,在这里主要使用到它作为浏览器的功能 思路: 使用CefSharp打开相关网页,以http://fundf ...

  4. python实战|python爬取58同城租房数据并以Excel文件格式保存到本地

    python实战|python爬取58同城租房数据并以Excel文件格式保存到本地 一.分析目标网站url 目标网站:https://cq.58.com/minsuduanzu/ 让我们看看网站长啥样 ...

  5. python爬取微博热搜数据并保存!

    主要用到requests和bf4两个库将获得的信息保存在d://hotsearch.txt下importrequests;importbs4mylist=[]r=requests.get(ur- 很多 ...

  6. Python爬取京东任意商品数据实战总结

    利用Python爬取京东任意商品数据 今天给大家展示爬取京东商品数据 首先呢还是要分思路的,我分为以下几个步骤: 第一步:得到搜索指定商的url 第二步:获得搜索商品列表信息 第三步:对得到的商品数据 ...

  7. python 爬取24小时天气数据

    python 爬取24小时天气数据 1.引入相关库 # -*- coding: utf-8 -*- import requests import numpy as np 关于爬虫,就是在网页上找到自己 ...

  8. python爬淘宝app数据_一篇文章教会你用Python爬取淘宝评论数据(写在记事本)

    [一.项目简介] 本文主要目标是采集淘宝的评价,找出客户所需要的功能.统计客户评价上面夸哪个功能多,比如防水,容量大,好看等等. [二.项目准备工作] 准备Pycharm,下载安装等,可以参考这篇文章 ...

  9. PYTHON爬取汽车之家数据

    PYTHON爬取汽车之家数据 使用知识 使用BeautifulSoup模块 使用正则表达式 使用到多线程爬取 使用说明 使用前请安装BeauifulSoup 起始页面: https://www.aut ...

最新文章

  1. 关于一些Linux SVN的安装使用
  2. PNAS:利用long-read生成个人转录组
  3. GentleNet使用之详细图解[语法使用增强版]
  4. SQLSERVER2014中的新功能
  5. DateTime格式大全
  6. java ee 博客园_JAVAEE 介绍
  7. optee中的arm64的virt_to_phys的实现
  8. java中的Volatile关键字使用
  9. 由于这台计算机没有终端服务器客户端访问许可证,远程会话被中断解决办法...
  10. python selenium系列(六)实战技巧之弹框处理
  11. 信息学奥赛C++语言:滔滔吃苹果
  12. python 变量赋值是引用和拷贝_Python 中变量赋值传递时的引用和拷贝
  13. markdown与latex:矩阵的书写
  14. 报错ValueError: check_hostname requires server_hostname
  15. 爱你,我永远的 Elaine
  16. 招银网络科技java春招二面_招银网络科技 2019春招笔试题复盘
  17. 稀疏数组练习demo 数据结构和算法
  18. oracle 取月份的第一天
  19. Python英文单词大小写转换及所有首字母大写
  20. 子类不能抛出新的异常

热门文章

  1. 访问控制的三种模型(DAC、MAC、RBAC)
  2. xcode打包IPA上架App Store图文详解
  3. 辽宁省中职高考计算机专业,2017年辽宁民族师范高等专科学校单招(计算机)考试大纲(中职生)...
  4. Unity3D官方推荐教程roll a bal案例
  5. 商务与经济统计 | 描述统计学
  6. PB 自定义按钮(不使用api重绘)
  7. c++实现天干地支纪年法
  8. 百度网盘秒传链接生成及提取方法
  9. python爬取新闻存入数据库_python爬取数据存入数据库
  10. 强引用与弱引用(不太懂,不过文章形容的不错)