使用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 相关文章推荐
Python 列表list使用介绍
Nov 30 Python
详解Python中time()方法的使用的教程
May 22 Python
python3使用SMTP发送HTML格式邮件
Jun 19 Python
PyCharm设置每行最大长度限制的方法
Jan 16 Python
Python编写一个验证码图片数据标注GUI程序附源码
Dec 09 Python
Python PyInstaller安装和使用教程详解
Jan 08 Python
Django3中的自定义用户模型实例详解
Aug 23 Python
Python爬取股票信息,并可视化数据的示例
Sep 26 Python
利用Python优雅的登录校园网
Oct 21 Python
python利用文件时间批量重命名照片和视频
Feb 09 Python
用Python监控你的朋友都在浏览哪些网站?
May 27 Python
OpenCV 图像梯度的实现方法
Jul 25 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
法兰绒滤网冲泡
2021/03/03 冲泡冲煮
excellent!――ASCII Art(由目标图象生成ascii)
2007/02/20 PHP
PHP程序员编程注意事项
2008/04/10 PHP
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
2011/10/31 PHP
php检测mysql表是否存在的方法小结
2017/07/20 PHP
PHP迭代与递归实现无限级分类
2017/08/28 PHP
摘自启点的main.js
2008/04/20 Javascript
javascript自定义in_array()函数实现方法
2015/08/03 Javascript
js实现类似MSN提示的页面效果代码分享
2015/08/24 Javascript
js弹出框、对话框、提示框、弹窗实现方法总结(推荐)
2016/05/31 Javascript
解决option标签selected="selected"属性失效的问题
2017/11/06 Javascript
jQuery实现右侧抽屉式在线客服功能
2017/12/25 jQuery
JavaScript类的继承多种实现方法
2020/05/30 Javascript
解决echarts 一条柱状图显示两个值,类似进度条的问题
2020/07/20 Javascript
在Python中利用Into包整洁地进行数据迁移的教程
2015/03/30 Python
Python的Tornado框架异步编程入门实例
2015/04/24 Python
Python2.7简单连接与操作MySQL的方法
2016/04/27 Python
简单讲解Python编程中namedtuple类的用法
2016/06/21 Python
python使用Tkinter实现在线音乐播放器
2018/01/30 Python
浅谈python的深浅拷贝以及fromkeys的用法
2019/03/08 Python
Pandas之groupby( )用法笔记小结
2019/07/23 Python
python代码 FTP备份交换机配置脚本实例解析
2019/08/01 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
2020/04/18 Python
python函数enumerate,operator和Counter使用技巧实例小结
2020/02/22 Python
python3获取控制台输入的数据的具体实例
2020/08/16 Python
Python暴力破解Mysql数据的示例
2020/11/09 Python
利用CSS3实现文字折纸效果实例代码
2018/07/10 HTML / CSS
在canvas上实现元素图片镜像翻转动画效果的方法
2018/03/20 HTML / CSS
Canvas环形饼图与手势控制的实现代码
2019/11/08 HTML / CSS
介绍一下Prototype的$()函数,$F()函数,$A()函数都是什么作用?
2014/03/05 面试题
医药代表个人的求职信分享
2013/12/08 职场文书
建筑工地宣传标语
2014/06/18 职场文书
2015年挂职锻炼工作总结
2014/12/12 职场文书
民警忠诚教育心得体会
2016/01/23 职场文书
高二化学教学反思
2016/02/22 职场文书
react合成事件与原生事件的相关理解
2021/05/13 Javascript