简化Python客户端库
项目描述
Zester是一个库,它使开发没有API的网站Python客户端变得更容易。
没有lxml,没有XPath,只有javascript。
让我们通过将以下代码保存到名为hnclient.py的文件中来为Hacker News创建一个客户端库
from zester import MultipleClient, Attribute class HNClient(MultipleClient): url = "http://news.ycombinator.com/" title = Attribute(selector="$('.title a')", modifier="$(el).html()") link = Attribute(selector="$('.title a')"), modifier="$(el).attr('href')") points = Attribute(selector="$('.subtext span')", modifier="$(el).html().replace(' points', '')")
现在,让我们使用我们刚刚创建的客户端。打开Python外壳
>>> from hnclient import HNClient >>> client = HNClient() >>> stories = client.process() >>> stories[0] HNClientResponse(points=u'200', link=u'http://daltoncaldwell.com/what-twitter-could-have-been', title=u'What Twitter could have been') >>> print stories[0].title What Twitter could have been >>> print stories[0].link http://daltoncaldwell.com/what-twitter-could-have-been >>> print stories[0].points 56
我们那里继承自MultipleClient,因为我们计划返回多个结果。如果我们想为像Weather.gov这样的返回单个结果的项目创建客户端,我们可以这样做
from zester import SingleClient, Attribute class WeatherClient(SingleClient): url = "http://forecast.weather.gov/MapClick.php?lat={lat}&lon={lng}" temperature = Attribute(selector="$('.myforecast-current-lrg').html()") humidity = Attribute(selector="$('.current-conditions-detail li').contents()[1]") heat_index = Attribute(selector="$('.current-conditions-detail li').contents()[11]") def __init__(self, lat, lng, *args, **kwargs): super(WeatherClient, self).__init__(*args, **kwargs) self.url = self.url.format(lat=lat, lng=lng)
这也展示了您如何允许接受参数
>>> from weather_client import WeatherClient >>> client = WeatherClient(lat=40.7143528, lng=-74.0059731) >>> curr_weather = client.process() >>> curr_weather WeatherClientResponse(heat_index=u'82\xb0F (28\xb0C)', temperature=u'80\xb0F', humidity=u'58%') >>> print curr_weather.temperature 80°F >>> print curr_weather.humidity 58% >>> print curr_weather.heat_index 82°F (28°C)
安装
Zester依赖于Ghost.py。您必须在安装Zester之前安装它。Ghost.py还需要安装PyQt或PySide。
安装Ghost.py后,安装zester
$ pip install zester
项目详情
关闭
zester-0.0.3.tar.gz的散列
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e1fc539ab9f0908440fbbaf6fd44961d5d770373ebd66e9597ef5417ee683b09 |
|
MD5 | f58505c1936fc5457fd420e0aa553145 |
|
BLAKE2b-256 | 5bb29f50c7ac13ee895399e2663ece2991ad6cd30edc3ba9ac371aee28b528dc |