使用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多进程机制实例详解
Jul 02 Python
Python自动化测试ConfigParser模块读写配置文件
Aug 15 Python
浅谈Python2.6和Python3.0中八进制数字表示的区别
Apr 28 Python
Python基础教程之利用期物处理并发
Mar 29 Python
python批量创建指定名称的文件夹
Mar 21 Python
pandas中DataFrame修改index、columns名的方法示例
Aug 02 Python
Python实现微信翻译机器人的方法
Aug 13 Python
pd.DataFrame统计各列数值多少的实例
Dec 05 Python
关于numpy.where()函数 返回值的解释
Dec 06 Python
Python 代码调试技巧示例代码
Aug 11 Python
Python与C/C++的相互调用案例
Mar 04 Python
python 实现体质指数BMI计算
May 26 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批量去除文件UTF8 BOM信息
2013/08/05 PHP
php操作XML、读取数据和写入数据的实现代码
2014/08/15 PHP
Laravel 5 框架入门(一)
2015/04/09 PHP
PHP explode()函数的几个应用和implode()函数有什么区别
2015/11/05 PHP
利用PHP判断是手机移动端还是PC端访问的函数示例
2017/12/14 PHP
javascript 函数式编程
2007/08/16 Javascript
关于Javascript与iframe的那些事儿
2013/07/04 Javascript
js冒泡、捕获事件及阻止冒泡方法详细总结
2014/05/08 Javascript
js解决select下拉选不中问题
2014/10/14 Javascript
js实现从右向左缓缓浮出网页浮动层广告的方法
2015/05/09 Javascript
jquery实现的树形目录实例
2015/06/26 Javascript
整理Javascript基础语法学习笔记
2015/11/29 Javascript
js获取本机操作系统类型的两种方法
2015/12/19 Javascript
剖析Node.js异步编程中的回调与代码设计模式
2016/02/16 Javascript
ng-options和ng-checked在表单中的高级运用(推荐)
2017/01/21 Javascript
详解Weex基于Vue2.0开发模板搭建
2017/03/20 Javascript
JavaScript操作文件_动力节点Java学院整理
2017/06/30 Javascript
JS实现星星海特效
2019/12/24 Javascript
Python 命令行参数sys.argv
2008/09/06 Python
Python信息抽取之乱码解决办法
2017/06/29 Python
使用python 和 lint 删除项目无用资源的方法
2017/12/20 Python
Python代码块批量添加Tab缩进的方法
2018/06/25 Python
分析python请求数据
2018/08/19 Python
详解python和matlab的优势与区别
2019/06/28 Python
Python流程控制 while循环实现解析
2019/09/02 Python
解决pycharm 格式报错tabs和space不一致问题
2021/02/26 Python
Ray-Ban雷朋美国官网:全球领先的太阳眼镜品牌
2016/07/20 全球购物
TripAdvisor台湾:全球最大旅游网站
2018/08/26 全球购物
客户表扬信范文
2014/01/10 职场文书
校庆标语集锦
2014/06/25 职场文书
2015年加油站站长工作总结
2015/05/27 职场文书
2016年校园社会综合治理宣传月活动总结
2016/03/16 职场文书
2019年年中工作总结讲话稿模板
2019/03/25 职场文书
导游词之台湾阿里山
2019/10/23 职场文书
Python办公自动化之教你用Python批量识别发票并录入到Excel表格中
2021/06/26 Python
vue3中provide && inject的使用
2021/07/01 Vue.js