使用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列表操作使用示例分享
Feb 21 Python
python获取网页状态码示例
Mar 30 Python
用Python程序抓取网页的HTML信息的一个小实例
May 02 Python
python中PIL安装简单教程
Apr 21 Python
Python+树莓派+YOLO打造一款人工智能照相机
Jan 02 Python
Python 编码规范(Google Python Style Guide)
May 05 Python
Django Admin中增加导出CSV功能过程解析
Sep 04 Python
Python 转换RGB颜色值的示例代码
Oct 13 Python
pyenv虚拟环境管理python多版本和软件库的方法
Dec 26 Python
Django的ListView超详细用法(含分页paginate)
May 21 Python
如何基于Python代码实现高精度免费OCR工具
Jun 18 Python
Python迭代器协议及for循环工作机制详解
Jul 14 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的内置函数,通过DES算法对数据加密和解密
2012/06/21 PHP
PHP自动识别字符集并完成转码详解
2013/08/02 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
2013/11/27 PHP
php调用c接口无错版介绍
2014/03/11 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
js 解决“options为空或不是对象”
2008/12/22 Javascript
JavaScript入门教程(11) js事件处理
2009/01/31 Javascript
ie下动态加态js文件的方法
2011/09/13 Javascript
JQuery制作的放大效果的popup对话框(未添加任何jquery plugin)分享
2013/04/28 Javascript
node.js中的fs.createReadStream方法使用说明
2014/12/17 Javascript
javascript 构造函数方式定义对象
2015/01/02 Javascript
jQuery封装的tab选项卡插件分享
2015/06/16 Javascript
JavaScript实现字符串与日期的互相转换及日期的格式化
2016/03/07 Javascript
Node.js的Web模板引擎ejs的入门使用教程
2016/06/06 Javascript
Javascript 制作图形验证码实例详解
2016/12/22 Javascript
JS中静态页面实现微信分享功能
2017/02/06 Javascript
jQuery正则验证注册页面经典实例
2017/06/10 jQuery
JS非空验证及邮箱验证的实例
2017/08/11 Javascript
React Native之prop-types进行属性确认详解
2017/12/19 Javascript
Vue+webpack项目基础配置教程
2018/02/12 Javascript
JavaScript中的E-mail 地址格式验证
2018/03/28 Javascript
js逆向解密之网络爬虫
2019/05/30 Javascript
Python基于多线程实现ping扫描功能示例
2018/07/23 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
从python读取sql的实例方法
2020/07/21 Python
实例讲解CSS3中的border-radius属性
2015/08/18 HTML / CSS
关于.NET, HTML的五个问题
2012/08/29 面试题
动物科学专业毕业生的自我评价
2013/11/29 职场文书
自我评价怎么写正确呢?
2013/12/02 职场文书
《小池塘》教学反思
2014/02/28 职场文书
国庆节演讲稿范文2014
2014/09/19 职场文书
红领巾广播站广播稿
2014/10/19 职场文书
2019毕业论文致谢词
2019/06/24 职场文书
Python 使用dict实现switch的操作
2021/04/07 Python
HTML中table表格拆分合并(colspan、rowspan)
2021/04/07 HTML / CSS
python入门学习关于for else的特殊特性讲解
2021/11/20 Python