使用python爬虫实现网络股票信息爬取的demo


Posted in Python onJanuary 05, 2018

实例如下所示:

import requests
from bs4 import BeautifulSoup
import traceback
import re
 
def getHTMLText(url):
 try:
  r = requests.get(url)
  r.raise_for_status()
  r.encoding = r.apparent_encoding
  return r.text
 except:
  return ""
 
def getStockList(lst, stockURL):
 html = getHTMLText(stockURL)
 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])
  except:
   continue
 
def getStockInfo(lst, stockURL, fpath):
 for stock in lst:
  url = stockURL + stock + ".html"
  html = getHTMLText(url)
  try:
   if html=="":
    continue
   infoDict = {}
   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].text
    val = valueList[i].text
    infoDict[key] = val
    
   with open(fpath, 'a', encoding='utf-8') as f:
    f.write( str(infoDict) + '\n' )
  except:
   traceback.print_exc()
   continue
 
def 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()

使用python爬虫实现网络股票信息爬取的demo

优化并且加入进度条显示

import requests
from bs4 import BeautifulSoup
import traceback
import re
def getHTMLText(url, code="utf-8"):
 try:
  r = requests.get(url)
  r.raise_for_status()
  r.encoding = code
  return r.text
 except:
  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])
  except:
   continue
def getStockInfo(lst, stockURL, fpath):
 count = 0
 for stock in lst:
  url = stockURL + stock + ".html"
  html = getHTMLText(url)
  try:
   if html == "":
    continue
   infoDict = {}
   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].text
    val = valueList[i].text
    infoDict[key] = val
   with open(fpath, 'a', encoding='utf-8') as f:
    f.write(str(infoDict) + '\n')
    count = count + 1
    print("\r当前进度: {:.2f}%".format(count * 100 / len(lst)), end="")
  except:
   count = count + 1
   print("\r当前进度: {:.2f}%".format(count * 100 / len(lst)), end="")
   continue
def main():
 stock_list_url = 'http://quote.eastmoney.com/stocklist.html'
 stock_info_url = 'https://gupiao.baidu.com/stock/'
 output_file = 'BaiduStockInfo.txt'
 slist = []
 getStockList(slist, stock_list_url)
 getStockInfo(slist, stock_info_url, output_file)
main()

使用python爬虫实现网络股票信息爬取的demo

以上这篇使用python爬虫实现网络股票信息爬取的demo就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用graphics.py实现2048小游戏
Mar 10 Python
python实现简单的socket server实例
Apr 29 Python
python如何去除字符串中不想要的字符
Jul 05 Python
python实现决策树分类(2)
Aug 30 Python
python读取并定位excel数据坐标系详解
Jun 26 Python
余弦相似性计算及python代码实现过程解析
Sep 18 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
Oct 12 Python
python 实现return返回多个值
Nov 19 Python
Python 安装 virturalenv 虚拟环境的教程详解
Feb 21 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
Feb 28 Python
python实现学生管理系统开发
Jul 24 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
Sep 15 Python
简单实现python收发邮件功能
Jan 05 #Python
5款非常棒的Python工具
Jan 05 #Python
Python基于列表模拟堆栈和队列功能示例
Jan 05 #Python
Django 2.0版本的新特性抢先看!
Jan 05 #Python
微信跳一跳游戏python脚本
Apr 01 #Python
Python基于列表list实现的CRUD操作功能示例
Jan 05 #Python
django 2.0更新的10条注意事项总结
Jan 05 #Python
You might like
PHP读取文件并可支持远程文件的代码分享
2012/10/03 PHP
php中array_multisort对多维数组排序的方法
2020/06/21 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
JS 实现Json查询的方法实例
2013/04/12 Javascript
JS实现随机化快速排序的实例代码
2013/08/01 Javascript
jQuery实现加入购物车飞入动画效果
2015/03/14 Javascript
jquery使用remove()方法删除指定class子元素
2015/03/26 Javascript
JS获取checkbox的个数简单实例
2016/08/19 Javascript
Vue.js开发环境搭建
2016/11/10 Javascript
利用js获取下拉框中所选的值
2016/12/01 Javascript
JQuery和HTML5 Canvas实现弹幕效果
2017/01/04 Javascript
Bootstrap的popover(弹出框)在append后弹不出(失效)
2017/02/27 Javascript
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
antd组件Upload实现自己上传的实现示例
2018/12/18 Javascript
jQuery判断自定义属性data-val用法示例
2019/01/07 jQuery
js实现简单的无缝轮播效果
2020/09/05 Javascript
Python实现将罗马数字转换成普通阿拉伯数字的方法
2017/04/19 Python
Python文件操作基本流程代码实例
2017/12/11 Python
python3.5安装python3-tk详解
2019/04/26 Python
SELENIUM自动化模拟键盘快捷键操作实现解析
2019/10/28 Python
Python pandas自定义函数的使用方法示例
2019/11/20 Python
python爬虫实现POST request payload形式的请求
2020/04/30 Python
Python魔术方法专题
2020/06/19 Python
图解Python中深浅copy(通俗易懂)
2020/09/03 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
HTML5 的新的表单元素(datalist/keygen/output)使用介绍
2013/07/19 HTML / CSS
详解如何解决使用JSON.stringify时遇到的循环引用问题
2021/03/23 Javascript
经典公益广告词
2014/03/13 职场文书
个人批评与自我批评材料
2014/10/17 职场文书
2014年社区党建工作总结
2014/11/11 职场文书
mybatis使用oracle进行添加数据的方法
2021/04/27 Oracle
解决Golang中goroutine执行速度的问题
2021/05/02 Golang
Python使用psutil库对系统数据进行采集监控的方法
2021/08/23 Python
springboot新建项目pom.xml文件第一行报错的解决
2022/01/18 Java/Android
改造DE1103三步曲
2022/04/07 无线电
Pandas 数据编码的十种方法
2022/04/20 Python