• 本次练习是一个定向爬虫,爬取股票的相关数据,用到beautifulsoup,re,requests等库。
  • 爬前分析:先分析比较不同网站提供的股票数据,在这里比较的是新浪股票和百度股票。因为百度股票的相关数据直接在html页面中爬取相对方便,而新浪股票的数据是通过js来传递的,获取比较麻烦,所以选择百度股票作为数据来源。
  • 爬取流程:通过东方财富网得到上交所和深交所的所有股票代码,将股票代码依次导入百度股票的url中,即可访问各股的数据,再来分析百度股票的HTML页面爬取相关数据。
  • 工具环境:python3.6.5,pycharm,win10。

图片来自拍信

0.网页分析

想必大家应该不是第一次爬取数据了,对于F12开发者工具有了一定了解,所以这里就不再赘述了。对于数据来源,别执着于一个网站,可以多分析几个网站来选择相对爬取简单的网站来进行数据的爬取。


1.流程分析

东方财富网源代码

百度股票的URL:http://gupiao.baidu.com/stock/sh502036.html
分析可得:只需将东方财富网中的.html前的股票代码提取出来并加入到https://gupiao.baidu.com/stock/的后面,便可以得到所有股票源数据。

百度股票源代码数据部分


2.函数设定

依据流程设定函数


3.完整代码

import requests
from bs4 import BeautifulSoup
import traceback
import redef getHTMLText(url, code="utf-8"):try:r = requests.get(url)r.raise_for_status()r.encoding = codereturn r.textexcept:return ""def getStockList(lst, stockURL):html = getHTMLText(stockURL, "GB2312")soup = BeautifulSoup(html, 'html.parser') a = soup.find_all('a')for i in a:try:href = i.attrs['href']lst.append(re.findall(r"[s][hz]\d{6}", href)[0])   # 匹配类似sh000001的股票代码except:continuedef getStockInfo(lst, stockURL, fpath):count = 0for stock in lst:url = stockURL + stock + ".html"html = getHTMLText(url)try:if html=="":continueinfoDict = {}soup = BeautifulSoup(html, 'html.parser')stockInfo = soup.find('div',attrs={'class':'stock-bets'})name = stockInfo.find_all(attrs={'class':'bets-name'})[0]infoDict.update({'股票名称': name.text.split()[0]})keyList = stockInfo.find_all('dt')valueList = stockInfo.find_all('dd')for i in range(len(keyList)):key = keyList[i].textval = valueList[i].textinfoDict[key] = valwith open(fpath, 'a', encoding='utf-8') as f:f.write( str(infoDict) + '\n' )count = count + 1print("\r当前进度: {:.2f}%".format(count*100/len(lst)),end="")   # \r:能让输出比例时不自动换行except:count = count + 1print("\r当前进度: {:.2f}%".format(count*100/len(lst)),end="")continuedef main():stock_list_url = 'http://quote.eastmoney.com/stocklist.html'stock_info_url = 'https://gupiao.baidu.com/stock/'output_file = 'D:/BaiduStockInfo.txt'slist=[]getStockList(slist, stock_list_url)getStockInfo(slist, stock_info_url, output_file)main()

运行

本练习来自中国大学MOOC

Python程序设计思维练习---股票数据定向爬虫相关推荐

  1. python 东方财富网百度股票数据定向爬虫 实例

    功能: 1. 获取 上交所 深 交所的股票信息 2. 输出保存到文件中 技术路线: requests -beatiful soup - re 候选:数据网站选择 1.静态网站,信息静态存在HTML页面 ...

  2. Python 网络爬虫笔记8 -- 股票数据定向爬虫

    Python 网络爬虫笔记8 – 股票数据定向爬虫 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Pyth ...

  3. Python网络爬虫实例1:股票数据定向爬虫

    Python网络爬虫实例:股票数据定向爬虫 一.功能描述 目标:获取上交所和深交所所有股票的名称和交易信息 输出:保存到文件中 技术路线:requests-bs4-re 二.候选数据网站选择 候选网站 ...

  4. python如何爬虫股票数据_python爬虫实例,股票数据定向爬虫

    前言 我服了,这几天,怎么涨两天还不够跌一次,害.希望这个可以帮到自己! "股票数据定向爬虫"实例介绍 功能描述 目标:获取上交所和深交所所有股票的名称和交易信息 输出:保存到文件 ...

  5. 【Python爬虫学习】八、股票数据定向爬虫(2020年1月31日成功爬取中财网,百度股市通web版404了)

    功能描述: 目标:获取股票的名称和交易信息 输出:保存到文件中 程序结构设计: 步骤1:从中财网http://quote.cfi.cn/stockList.aspx获取股票列表 步骤2:根据股票列表获 ...

  6. Python爬虫-股票数据定向爬虫(东方财富网)

    实例:股票数据定向爬虫 功能描述 目标:获取上交所和深交所所有股票的名称和交易信息 输出:保存到文件中 技术路线:requests­ bs4­ re 候选数据网站的选择 选取原则:股票信息静态存在于H ...

  7. 凤凰网股票数据定向爬虫——改编自北京理工大学嵩天老师的课程实例

    本文导航 前言 功能描述 技术路线 数据网站 程序结构设计 实现过程 实现结果 代码展示 可能遇到的问题 写在后面 前言 最近看到嵩天老师**<python网络爬虫与信息提取>的股票数据定 ...

  8. 基于Request+bs4-re技术路线实现股票数据定向爬虫

    基于Request+bs4-re技术路线实现股票数据定向爬虫 一.功能描述 1. 目标 2. 可行性分析 3. 技术路线选择 4. 项目的技术难点 二.程序结构设计 三.程序整体框架 四.程序功能的实 ...

  9. 爬虫03_股票数据定向爬虫

    1.准备工作 功能描述: 目标:获取上交所和深交所所有股票的名称和交易信息 输出:保存到文件中 所用技术:requests.bs4.re.csv 数据网站选择: 新浪股票:http://finance ...

  10. 现在还有人说Python 爬虫没用吗?股票数据定向爬虫让你轻松了解股势

    说明 网站选择原则: 股票信息静态存在于html页面中,非js代码生成,没有Robbts协议限制. 选取方法: 打开网页,查看源代码,搜索网页的股票价格数据是否存在于源代码中. 需要相关python爬 ...

最新文章

  1. windows10下使用virtualenv虚拟技术,管理多个python版本,多个项目包环境
  2. java8 并行执行方法_如何在Java8中执行此并行任务
  3. WKWebview 的使用及坑
  4. 5.11 程序示例--垃圾邮件检测-机器学习笔记-斯坦福吴恩达教授
  5. 校验数字签名防止apkP二次打包
  6. python变量和变量赋值的几种形式
  7. linux wifi关闭5g,TP-Link路由器如何关闭5G无线Wi-Fi信号?
  8. Nancy in .Net Core学习笔记 - 视图引擎
  9. centos安装apache_实战Linux部署Apache
  10. django 中多字段主键(复合、联合主键)
  11. Springboot,log文件配置时,logging.file.name与logging.file
  12. \045在字符串中输出为%
  13. UML大作业【小型超市管理系统】
  14. mac用navicat连接mysql_Mac OS下,使用Navicat连接MySQL出现的问题
  15. nexus5 博通芯片WIFI详解 (2)
  16. python猜随机数代码_猜随机数游戏Python
  17. Python 圆的周长和面积计算
  18. java水平翻转矩阵_Java实现 LeetCode 519 随机翻转矩阵
  19. 智能电视以及机顶盒屏幕截取的方法
  20. 【C语言】实现一个函数,打印乘法口诀表,口诀表的行列数自己指定

热门文章

  1. Meta标签:让360浏览器默认使用极速模式打开网页
  2. 记录一下学习EFCore中的基础知识
  3. 仿真树叶飘落效果的实现
  4. 系统内核溢出漏洞提权之Windows Exploit Suggester
  5. 利用python绘制太阳花
  6. 点亮了中行U盾12864屏线 12液晶,附12864详细手册
  7. 小猫钓鱼游戏java实现
  8. 计算机cad运行缓慢怎样处理,AutoCAD运行卡顿怎么办-AutoCAD运行卡顿的解决方法 - 河东软件园...
  9. 工控组态编程相关知识点介绍
  10. DirectX显示流程学习小结