工大助手(C#与python交互)
2016-06-19 20:36
411 查看
工大助手(爬虫——C#与python交互)
基本内容
工大助手(桌面版)实现登陆、查成绩、计算加权平均分等功能
团队人员
13070046 孙宇辰13070003 张帆
13070004 崔巍
13070006 王奈
13070002 张雨帆
13070045 汪天米
工大教务爬虫编写(C#与python交互)
完成python的爬虫之后就需要考虑如何与前端进行交互。我们最初的设想是C/S架构,因为学校的服务器只能内网访问,我们想在实验室搭起一台服务器作为代理服务器,但在内网地址如何映射到外网上我们没有找到很好的办法,这也是我们接下来开发的目标。没有了代理服务器,我们的任务就变成由爬虫获取数据,之后在客户端上展示出来,这就涉及到了C#与python之间的交互。经过搜索,我们找到了ironpython,一种在.NET和Mono上实现的Python语言,可以很方便地在C#中调用相应的python函数。
示例(C#):
using IronPython.Hosting; ScriptRuntime pyRuntime = Python.CreateRuntime(); dynamic obj = pyRuntime.UseFile("testScore.py"); String tmp = obj.getC();
示例(python):
def getC(): try: CaptchaUrl = "http://gdjwgl.bjut.edu.cn/CheckCode.aspx" picture = opener.open(CaptchaUrl).read() local = open('image.jpg', 'wb') local.write(picture) local.close() return "success" except urllib2.URLError, e: if hasattr(e,"result"): return e.result return "Error"
上面的示例代码是在C#中调用python中写好的函数,实现爬取验证码的功能。但同时因为ironpython是一种在.NET和Mono上实现的Python语言,所以并不支持所有python的包,例如之前用来分析网页的BeautifulSoup在ironpython中就无法正常使用,搜索相应的解决方案也没有找到答案。所以将分析网页部分转移到了C#上,利用C#的HtmlAglity进行网页分析,提取相应的信息,并作为参数传入到python中。
在之后的迭代开发中,我们会添加代理服务器,就不再需要ironpython,而是C#向服务器端发送一个请求,服务器端由python进行相应的处理,并将结果返回给前端,这样的体系结构更加完备。
相关文章推荐
- Python如何拉平(flatten)嵌套列表(nested list)--(递归生成器)
- caffe 实例笔记 4 Multilabel classification on PASCAL using python data-layers
- Python程序高效地调试
- python3 zip的用法
- python生成器表达式
- Python 小练习_班级平均分
- 测试驱动开发与Python
- Python包中__init__.py作用
- python3 与python2 异常处理的区别与联系
- 浅谈Python的异常处理
- python实现迭代器
- qpython3 读取安卓lastpass Cookies
- Python文本处理工具——TextRank
- Python strip()方法
- 使用 twisted 的 txrestapi 模块提供基本的异步 API 服务。
- Python 自带小工具
- Python中处理DataFrame,R绘图
- 关于Python的配置文件
- Python-format函数
- List列表的用法以及使用