使用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 08 Python
Python通过future处理并发问题
Oct 17 Python
python实现数据库跨服务器迁移
Apr 12 Python
如何通过python的fabric包完成代码上传部署
Jul 29 Python
python并发编程多进程 互斥锁原理解析
Aug 20 Python
Python 私有化操作实例分析
Nov 21 Python
Python assert关键字原理及实例解析
Dec 13 Python
PageFactory设计模式基于python实现
Apr 14 Python
通俗讲解python 装饰器
Sep 07 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
Dec 07 Python
django注册用邮箱发送验证码的实现
Apr 18 Python
python实现一个简单的贪吃蛇游戏附代码
Jun 28 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 PDO函数库详解
2010/04/27 PHP
一个简单的php加密解密函数(动态加密)
2013/06/19 PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
2014/03/18 PHP
PHP文件读取功能的应用实例
2015/05/08 PHP
PHP实现无限级分类(不使用递归)
2015/10/22 PHP
深入理解JavaScript 闭包究竟是什么
2013/04/12 Javascript
JQuery与JS里submit()的区别示例介绍
2014/02/17 Javascript
html5+javascript制作简易画板附图
2014/04/25 Javascript
自己使用jquery写的一个无缝滚动的插件
2014/04/30 Javascript
Node调试工具JSHint的安装及配置教程
2014/05/27 Javascript
js实现键盘控制DIV移动的方法
2015/01/10 Javascript
JavaScript获得当前网页来源页面(即上一页)的方法
2015/04/03 Javascript
AngularJS 单元测试(二)详解
2016/09/21 Javascript
关于js原型的面试题讲解
2016/09/25 Javascript
smartupload实现文件上传时获取表单数据(推荐)
2016/12/12 Javascript
MvcPager分页控件 适用于Bootstrap
2017/06/03 Javascript
jQuery表单元素过滤选择器用法实例分析
2019/02/20 jQuery
vue项目强制清除页面缓存的例子
2019/11/06 Javascript
vue在路由中验证token是否存在的简单实现
2019/11/11 Javascript
基于js实现数组相邻元素上移下移
2020/05/19 Javascript
vue的hash值原理也是table切换实例代码
2020/12/14 Vue.js
[53:36]Liquid vs VP Supermajor决赛 BO 第三场 6.10
2018/07/05 DOTA
跟老齐学Python之让人欢喜让人忧的迭代
2014/10/02 Python
python输出当前目录下index.html文件路径的方法
2015/04/28 Python
Python编写一个闹钟功能
2017/07/11 Python
Windows平台Python连接sqlite3数据库的方法分析
2017/07/12 Python
django DRF图片路径问题的解决方法
2018/09/10 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
俄罗斯韩国化妆品网上商店:Cosmasi.ru
2019/10/31 全球购物
Bata印度官网:源自欧洲舒适鞋履品牌
2020/01/30 全球购物
网络教育自我鉴定
2013/11/01 职场文书
物业管理专业个人的自我评价
2013/11/19 职场文书
区域总监的岗位职责
2013/11/21 职场文书
经济管理专业自荐信
2013/12/30 职场文书
招聘专员岗位职责
2014/03/07 职场文书
关于golang高并发的实现与注意事项说明
2021/05/08 Golang