最近有需求抓取自己系统页面截图并作为邮件正文发送,经评估 发现python做这事儿最适合不过:
抓图依赖 python脚本+FIREFOX
准备:
1.数据库建立抓取配置表,存页面访问路径、文件存储路径
2.安装所需的 py包 :seleniu的安装网上很多教程;下载对应的数据库驱动
代码实现如下:
软件版本:Firefox47 cx-Oracle (5.2.1) selenium (2.53.6)
# -*- coding: utf-8 -*- # author lzy from selenium import webdriver import time,datetime import cx_Oracle def capture(url, pdir): browser = webdriver.Firefox() # Get local session of firefox browser.set_window_size(600, 900) browser.get(url) # Load page browser.execute_script(""" (function () { var y = 0; var step = 100; window.scroll(0, 0); function f() { if (y < document.body.scrollHeight) { y += step; window.scroll(0, y); setTimeout(f, 50); } else { window.scroll(0, 0); document.title += "scroll-done"; } } setTimeout(f, 1000); })(); """) for i in xrange(30): if "scroll-done" in browser.title: break time.sleep(1) vdt = (datetime.datetime.now() - datetime.timedelta(days = 1)).strftime("%Y%m%d") browser.save_screenshot('D:/mywork/image/%s/screenShots_%s.png'%(pdir,vdt)) browser.close() if __name__ == "__main__": conn = cx_Oracle.connect('username','password','tnsname') cursor=conn.cursor(); sql='select f_sendurl,f_reportname from table where f_deflag = 0' cursor.execute(sql) rows =cursor.fetchall() for row in rows: capture(row[0],row[1]) cursor.close() conn.close()
相关推荐
- **SQL数据库**: 熟练使用关系型数据库MySQL或Oracle进行数据管理和查询。 - **NoSQL数据库**: 了解非关系型数据库Redis和MongoDB的特点及应用场景。 #### 爬虫技术 - **Requests/Scrapy/Selenium**: 掌握Requests...
可以是纯文本、JSON、XML等文本格式,也可以存储到非关系型数据库(如MongoDB、Redis)的键值对形式,或者保存为二进制文件(如图片、视频)到本地,还可以将数据存储到关系型数据库(如MySQL、Oracle、SQL Server)...
2. 编写Python脚本:创建一个新的Python文件,导入`appium`库,然后实例化一个Appium客户端,连接到本地Appium服务器。例如: ```python from appium import webdriver desired_caps = {} desired_caps['...
关系型数据库如MySQL、Oracle,或非关系型数据库如MongoDB、HBase等,可以提供高效、可扩展的数据存储解决方案。数据模型设计和索引优化对查询性能至关重要。 5. **并发与分布式爬虫**:为了提高采集效率,系统可能...
9. **数据持久化**:爬取到的数据可能需要存储在文件系统或数据库中,Java提供了JDBC接口用于与各种数据库交互,如MySQL、Oracle等。此外,NoSQL数据库如MongoDB也是存储非结构化数据的好选择。 10. **遵守网络道德...