Python笔记(十一)——数据抓取例子
上班时候想看股票行情怎么办?试试这个小例子,5分钟拉去一次股票价格,预警:
#coding=utf-8
import re
import urllib2
import time
import threading
import sys
import os
import struct
import win32con
import win32gui_struct
from win32api import *
try:
from winxpgui import *
except ImportError:
from win32gui import *
'''气泡显示逻辑'''
class PyNOTIFYICONDATA:
_struct_format = (
"I" # DWORD cbSize; 结构大小(字节)
"I" # HWND hWnd; 处理消息的窗口的句柄
"I" # UINT uID; 唯一的标识符
"I" # UINT uFlags;
"I" # UINT uCallbackMessage; 处理消息的窗口接收的消息
"I" # HICON hIcon; 托盘图标句柄
"128s" # TCHAR szTip[128]; 提示文本
"I" # DWORD dwState; 托盘图标状态
"I" # DWORD dwStateMask; 状态掩码
"256s" # TCHAR szInfo[256]; 气泡提示文本
"I" # union {
# UINT uTimeout; 气球提示消失时间(毫秒)
# UINT uVersion; 版本(0 for V4, 3 for V5)
# } DUMMYUNIONNAME;
"64s" # TCHAR szInfoTitle[64]; 气球提示标题
"I" # DWORD dwInfoFlags; 气球提示图标
)
_struct = struct.Struct(_struct_format)
hWnd = 0
uID = 0
uFlags = 0
uCallbackMessage = 0
hIcon = 0
szTip = ''
dwState = 0
dwStateMask = 0
szInfo = ''
uTimeoutOrVersion = 0
szInfoTitle = ''
dwInfoFlags = 0
def pack(self):
return self._struct.pack(
self._struct.size,
self.hWnd,
self.uID,
self.uFlags,
self.uCallbackMessage,
self.hIcon,
self.szTip,
self.dwState,
self.dwStateMask,
self.szInfo,
self.uTimeoutOrVersion,
self.szInfoTitle,
self.dwInfoFlags
)
def __setattr__(self, name, value):
# avoid wrong field names
if not hasattr(self, name):
raise NameError, name
self.__dict__[name] = value
class MainWindow:
def __init__(self, duration=3):
# Register the Window class.
wc = WNDCLASS()
hinst = wc.hInstance = GetModuleHandle(None)
wc.lpszClassName = "StockTask" # 字符串只要有值即可,下面3处也一样
wc.lpfnWndProc = { win32con.WM_DESTROY: self.OnDestroy } # could also specify a wndproc.
classAtom = RegisterClass(wc)
# Create the Window.
style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU
self.hwnd = CreateWindow(classAtom, "GuTask Window", style,
0, 0, win32con.CW_USEDEFAULT, win32con.CW_USEDEFAULT,
0, 0, hinst, None
)
UpdateWindow(self.hwnd)
iconPathName = os.path.abspath('favicon.ico')
print iconPathName
icon_flags = win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE
try:
hicon = LoadImage(hinst, iconPathName, win32con.IMAGE_ICON, 0, 0, icon_flags)
except:
hicon = LoadIcon(0, win32con.IDI_APPLICATION)
flags = NIF_ICON | NIF_MESSAGE | NIF_TIP
nid = (self.hwnd, 0, flags, win32con.WM_USER + 20, hicon, "Balloon tooltip")
Shell_NotifyIcon(NIM_ADD, nid)
def show_balloon(self, title, msg,duration):
# For this message I can't use the win32gui structure because
# it doesn't declare the new, required fields
nid = PyNOTIFYICONDATA()
nid.hWnd = self.hwnd
nid.uFlags = NIF_INFO
# type of balloon and text are random
nid.dwInfoFlags = NIIF_INFO
nid.szInfo = msg[:64]
nid.szInfoTitle = title[:256]
# Call the Windows function, not the wrapped one
from ctypes import windll
Shell_NotifyIcon = windll.shell32.Shell_NotifyIconA
Shell_NotifyIcon(NIM_MODIFY, nid.pack())
time.sleep(duration)
def OnDestroy(self, hwnd, msg, wparam, lparam):
nid = (self.hwnd, 0)
Shell_NotifyIcon(NIM_DELETE, nid)
PostQuitMessage(0) # Terminate the app.
tip_window=MainWindow()
'''数据抓取逻辑'''
class Stock:
def __init__(self,code,price,warn_price):
self.code=code
self.price=price
self.warn_price=warn_price
watch_stocks=[]
watch_stocks.append(Stock(',float('3.897'),float('3.897')))
watch_stocks.append(Stock(',float('3.88'),float('3.88')))
watch_stocks.append(Stock(',float('3.88'),float('3.88')))
def spiderStockPrice(stocks):
list=''
for stock in stocks:
code=stock.code
")):
list+="s_sh"+code
"):
list+="s_sh"+code
else:
list+="s_sz"+code
list+=","
qUrl='http://hq.sinajs.cn/rn=1522216317579&list='+list
# 获取行情数据
markdes=urllib2.urlopen(qUrl).read()
markdes=markdes.replace("var hq_str_s_sz","").replace("var hq_str_s_sh","").replace("=",",").replace("\"","").replace("\n","")
stockMarkets=markdes.split(";")
for stockMarket in stockMarkets:
if(stockMarket!=''):
sms=stockMarket.split(',')
for stock in stocks:
if(stock.code==sms[0]):
stock.price=float(sms[2])
return stocks
def doSpider():
current_stocks=spiderStockPrice(watch_stocks)
for current_stock in current_stocks:
if(current_stock.price*0.99<current_stock.warn_price):
tip_window.show_balloon(current_stock.code,str(current_stock.price),5)
global timer
timer=threading.Timer(300,doSpider)
timer.start()
if(__name__=="__main__"):
doSpider()
Python笔记(十一)——数据抓取例子的更多相关文章
- python&php数据抓取、爬虫分析与中介,有网址案例
近期在做一个网络爬虫程序.后台使用python不定时去抓取数据.前台使用php进行展示 站点是:http://se.dianfenxiang.com
- python 手机App数据抓取实战二抖音用户的抓取
前言 什么?你问我国庆七天假期干了什么?说出来你可能不信,我爬取了cxk坤坤的抖音粉丝数据,我也不知道我为什么这么无聊. 本文主要记录如何使用appium自动化工具实现抖音App模拟滑动,然后分析数据 ...
- python 手机App数据抓取实战一
前言 当前手机使用成为互联网主流,每天手机App产生大量数据,学习爬虫的人也不能只会爬取网页数据,我们需要学习如何从手机 APP 中获取数据,本文就以豆果美食为例,讲诉爬取手机App的流程 环境准备 ...
- python 3 Urllib 数据抓取
1.0 Urllib简介 Urllib是python自带的标准库,无需安装,直接引用即可.urllib通常用于爬虫开发,API(应用程序编程接口)数据获取和测试.在python2和python3中,u ...
- python爬虫数据抓取方法汇总
概要:利用python进行web数据抓取方法和实现. 1.python进行网页数据抓取有两种方式:一种是直接依据url链接来拼接使用get方法得到内容,一种是构建post请求改变对应参数来获得web返 ...
- Python爬虫工程师必学——App数据抓取实战 ✌✌
Python爬虫工程师必学——App数据抓取实战 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 爬虫分为几大方向,WEB网页数据抓取.APP数据抓取.软件系统 ...
- 吴裕雄--天生自然python学习笔记:WEB数据抓取与分析
Web 数据抓取技术具有非常巨大的应用需求及价值, 用 Python 在网页上收集数据,不仅抓取数据的操作简单, 而且其数据分析功能也十分强大. 通过 Python 的时lib 组件中的 urlpar ...
- 【Python入门只需20分钟】从安装到数据抓取、存储原来这么简单
基于大众对Python的大肆吹捧和赞赏,作为一名Java从业人员,我本着批判与好奇的心态买了本python方面的书<毫无障碍学Python>.仅仅看了书前面一小部分的我......决定做一 ...
- 数据抓取分析(python + mongodb)
分享点干货!!! Python数据抓取分析 编程模块:requests,lxml,pymongo,time,BeautifulSoup 首先获取所有产品的分类网址: def step(): try: ...
随机推荐
- JAVA可能问的几个面试题问题及问题的标准答案
问题一:你希望工作环境是怎样的? 标准答案:我对环境没有苛求,我会努力适应环境的. 注:此问题是在测试你的求职心态,是以自己为中心还是以工作为中心. 问题二:你觉得自己有哪些缺点? 标准答案:说一些对 ...
- OpenCV:OpenCV中的 parallel_for 和opencv parallel_for_
OpenCV使用OMP完成并行运算,在使用AdaBoost检测的时候,在cascadedetect.cpp 里面,大量使用 parallel_for_(Range(0, stripCount), Ca ...
- Visual Basic for Application
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'The note of Visual Basic for Applicati ...
- 读书笔记「Python编程:从入门到实践」_8.函数
8.1 定义函数 def greet_user(): # def 来告诉Python你要定义一个函数.这是函数定义 """Hello World""& ...
- sql server 查询时间 格式化输出
use test select * from vote insert into vote (contents) values(GETDATE()) insert into vote (contents ...
- apicloud UISearchBar 使用方法
app中经常会有搜索的页面. 大概逻辑是,一般来说首页有一个搜索的图,点击之后跳转到一个搜索的页面,在这个页面做搜索. 正常代码逻辑 <body> <a class="bu ...
- Python这些问题你会吗?
inal作用域的代码一定会被执行吗? 正常的情况下,finally作用域的代码一定会被执行的,不管是否发生异常.哪怕是调用了sys.exit函数,finally也是会被执行的,那怎么样才能让final ...
- Python基础学习(day1)
一.Python几点使用规范: 1.关于引号的使用规范 (1)字符串中含有单引号,则使用双引号外扩 print("It's ok") (2)字符串中含有双引号,则使用单引号外扩 p ...
- Python学习【第1篇】:环境配置
1. 下载安装包 https://www.python.org/ftp/python/2.7.14/python-2.7.14.amd64.msi # 2.7安装包 https://www. ...
- 7.ES几种常见的搜索方式
主要知识点 1, query string search (1) GET /ecommerce/product/_search (2) GET/ecommerce/product/_search? ...