How to install citrix receiver on Ubuntu 14.10

安装

  1. 下载最新版本的 citrix receiver for linux ,选择64-bit deb版本,点击 Download Now
  2. 双击下载完成的deb文件(Chrome默认下载路径在~/Downloads文件夹中),默认会跳转至软件中心(Ubuntu Software Center)
  3. 点击安装(Install),等待安装完成

使用

  1. 输入登录地址,登录页面如下
  2. 输入用户名密码
  3. 输入手机收到的验证码

常见错误

  • 证书错误,由于Citrix receiver初始信任的证书并不多;如果使用icaclient不信任的证书,则可能遇到这个错误
    1. 进入Citrix Receiver的可信任证书目录(Trusted store)
    2. 如果对于浏览器(Chrome/Firefox)站点是可信任的话,则可到/usr/share/ca-certificates/mozilla/找到对应的证书
    3. 将证书复制到icaclient的可信证书中
1
ubuntu:/opt/Citrix/ICAClient/keystore/cacerts$ sudo cp  /usr/share/ca-certificates/mozilla/Staat_der_Nederlanden_Root_CA_-_G2.crt .
  • 退出全屏在Ubuntu中很是麻烦:
    • 先按 Ctrl + F2
    • 再按 Ctrl + Win + 方向下

Beautiful Soup

之前介绍过如果使用lxml来解析HTML/XML,好处是可以使用Xpath,对于熟悉Xpath的人来说,可能比较方便。

今天简单介绍下另外一个解析HTML(HTML Parsing)的工具Beautiful Soup。

安装

由于我使用的是Ubuntu 14.04,可以直接使用Apt-get来安装:

1
$ sudo apt-get install Python-bs4

简单使用

1
2
3
>>> from bs4 import BeautifulSoup
# 使用默认解析器
>>> soup = BeautifulSoup(open("mv.html"))

搜索文档树

1
2
3
4
5
6
7
8
9
10
11
>>> soup = BeautifulSoup(content)
# 查找文档中所有class为blog_title的div标签
>>> blog_title_list = soup.find_all("div", class_="blog_title")
>>> title = blog_title_list[0]
>>> title
'<div class="blog_title" id="t_10001_1517731560102wjw1">
<a href="http://blog.sina.com.cn/s/blog_1517731560102wjw1.html" target="_blank">【日剧】《澄和堇/澄和薰》[单剧连载中]</a>
</div>'
# 获取title标签下a标签的href的属性值
>>> title.a.get('href')
'http://blog.sina.com.cn/s/blog_1517731560102wjw1.html'

指定文档解析器

如果是简单的使用场景,默认的解析器就可以解决问题,也就不必关心使用的是什么解析器。

目前bs支持的解析器和优先顺序如下:

  1. lxml
  2. html5lib
  3. html.parser

大部分的网页并不是完美的匹配HTML,在这时使用不同的解析器就有可能取到不同的结果。例如:

1
2
3
4
5
6
7
# 显式使用lxml
>>> BeautifulSoup("<a></p>", "lxml")
# <html><body><a></a></body></html>

# 显式使用html5lib
>>> BeautifulSoup("<a></p>", "html5lib")
# <html><head></head><body><a><p></p></a></body></html>

不同解析器的比较如下:

解析器 使用方法 优势 劣势
Python标准库 BeautifulSoup(markup, “html.parser”) Python的内置标准库/执行速度适中/文档容错能力强 Python 2.7.3 or 3.2.2)前 的版本中文档容错能力差
lxml BeautifulSoup(markup, “lxml”) 速度快 需要安装C语言库
html5lib BeautifulSoup(markup, “html5lib”) 最好的容错性/以浏览器的方式解析文档/生成HTML5格式的文档 速度慢

在编写Kodi插件的时候就遇到了这个问题,使用Python标准库,不能够正确解析全部HTML,大部分HTML在转换成soup对象时丢掉了。

最后使用html5lib解析器完美的解决了这个问题,写代码时,最好注明使用了哪种解析器,以减少不必要的麻烦。

参考资料:

  1. Beautiful Soup 4.2.0 文档

解析Json数据

1
2
3
4
5
6
7
8
9
10
11
>>> import json

>>> content='{"status":200,"msg":"OK","result":{"ticket":"-Ju3np4cSoM~2d75c267eb79f281~1455121096~n~~1~McmMbYV2A84tU471","captcha_url":false,"captcha_w":false,"captcha_h":false,"wait_time":0,"valid_until":"2016-02-10 16:33:17"}}'

>>> content_js = json.loads(content)
>>> content_js.get('status')
>>> ticket = content_js.get('result').get('ticket')

# get_dl_link
>>> url = 'https://api.openload.co/1/file/dl?file=%s&ticket=%s' % (file, ticket)

构造Json数据

1
2
3
4
5
6
7
>>> response = {'status': self.status,
                    'msg': self.msg,
                    'cookie': self.cookie,
                    'result': self.result }

>>> print json.dumps(response, sort_keys=True)
{"cookie": "JSESSIONID=PVzdXNMMpBQQTGvbM1Tcf8YBfDdsjxLLM7VQ4T1WQhFcQzv04WFC!263288888; path=/; HttpOnly, BIGipServerweb_pool=1025311498.16671.0000; path=/", "msg": "OK", "result": "011977", "status": 200}

Written with StackEdit.