RateBeer.com的PythonAPI

ratebeer的Python项目详细描述


这是什么?
----

`ratebeer<;http://www.ratebeer.com/>;``是一个用户创建的关于啤酒和啤酒厂的评论数据库。然而,他们的api已经关闭了
一段时间,使得以编程方式获取信息变得困难。
这简化了这个过程,允许您以最轻松的方式访问它。数据会以友好的方式返回给您:


…代码::python

>;>import ratebeer
>;>rb=ratebeer.ratebeer()
>;>rb.search('summit')
{beers':[<;啤酒('/beer/21st amendment summit ipa/61118/')>;,
<;啤酒('/beer/4ts summit hoppy/258783/')>;,

<;啤酒('/beer/karben4--summit maccc daddy hopfead red ale/264171/')>;,
<;啤酒('/beer/keroche summit lager/146462/')>;,
啤酒厂:[<;啤酒厂('/brewers/sound to summit brewing/22497/')>;,
<;啤酒厂('/brewers/summit brewing company/1233/’)>;,

<;酿酒厂('/brewers/summit hard cider and perry/18260/’)>;,
<;酿酒厂('/brewers/summit station restaurant brewery/346/’)>;}

beeradvocate.com为什么不呢?
----

我们喜欢喝啤酒。擦掉这一点,我们**喜欢**RateBeer。

需求
----

需要"请求[安全]<;https://pypi.python.org/pypi/requests>;` ` ` ` ` `,
`beautifulsoup4<;https://pypi.python.org/pypi/beautifulsoup4/4.3.2>;` ` ` `,
和`lxml<;https://pypi.python.org/pypi/lxml/3。4.1>;` ` ` ` ` ` ` ` ` ` ` ` ` ` `:









不需要密钥。简单地说:

…代码::python

>;>;import ratebeer
>;>;rb=ratebeer.ratebeer()
>;>;rb.search("summit extra pale ale")

``ratebeer``类
~~~~~~~~~~~~~~~~~~~~~

**方法**

-``获取啤酒``--输入啤酒页面的URL,然后函数
将返回一个包含啤酒信息的"beer"对象。
除了url之外,它还接受一个可选的"fetch"参数
(默认值:false),该参数可以设置为true以立即下载对象的属性。参见下面的"啤酒"类。您可以使用ratebeer.get-beer(url,true)复制"ratebeer.beer(url)"功能。代码::python

>;>;rb.beer("/beer/new begium tour de fall/279122/"
{"u has fetched":true,
"abv":6.0,
"brewed"at:none,
"brewery":<;brewery('/brewers/new begium brewing company/77/')>;,
"卡路里":180,
"说明":"New Belgium\x92对啤酒、自行车和福利的热爱是最好的"
如在Tour de Fat所述。我们对Cascade和"Amarillo Hops"的喜爱是我们的秋季淡啤酒之旅的最佳选择。
"我们在一年中最喜欢的时间里,在全国范围内重新航行。"上车,找到Tour de Fall Pale"
‘2014年秋季啤酒’,
‘IBU’:38,
‘IMG’网址:’http://res.cloudinary.com/ratebeer/image/upload/w-120,c-u limit,q-85,d-u no%20image.jpg/beer-279122.jpg’,
‘Mean-rating’:无,
‘name’:‘New Belgium Tour de Fall’,"
"数字评分":257,
"总体评分":77,
"季节性":秋季,
"风格":美国淡啤酒,
"风格评分":75,
"风格URL":"/beerstyles/美国淡啤酒/18/",
"标签":["层叠","阿马里洛"],
"url":"/beer/新比利时秋季之旅/279122/",
"加权平均":3.34}

-`` get_brewery`--传入brewery页面的url,此
函数将返回一个包含有关该brewery的信息的"brewery"对象。除了url之外,它还接受一个可选的
``fetch``参数(默认值:false),该参数可以设置为true以立即下载对象的属性。参见下面的"brewery"类。您可以使用ratebeer.get-brewery(url,true)复制``ratebeer.brewery(url)`
功能。

-``brewery`--返回一个包含
啤酒厂信息的字典。包括一个"Get\\\u Beers()"生成器,它提供有关啤酒厂啤酒的
信息。代码::python

>>gt;rb.brewery("/brewers/deschutes brewery/233/")
{"u已提取":true,
"城市":"bend",
"国家":"美国",
"名称":"deschutes brewery",
"邮政编码":"97702",
"州":"俄勒冈",
"街道":"901 sw simpSon Ave',
"电话":'(541)385-8606',
"类型":"微酿酒厂",
"网址":'/brewers/deschutes brewery/233/',
"网站":"http://www.deschutes brewery.com/"}

-``search`--一个通用搜索。有两个键的字典:beers和
breweries。每一个都包含一个对象列表,分别是啤酒和
啤酒厂。代码::python

>;>;rb=ratebeer()
>;>;results=rb.search("summit extra pale ale")
>;>;results
{啤酒':[<;啤酒('/beer/summit extra pale ale/7344/')>;,
<;啤酒('/beer/summit extra pale ale--rose petals/317841/')>;],
"啤酒厂":[]}
>;>>结果["啤酒"][0]。{"你已经取得了":真的,
"abv":5.1,
"酿造于":无,
"啤酒厂":<;啤酒厂('/brewers/summit brewing company/1233/')>;,
"卡路里":153,
"说明":"summit"特级淡啤并非只为啤酒爱好者酿造的啤酒。恰恰相反。它是每个人都喜欢的啤酒:建筑工人、股票经纪人、农民、销售人员、职员、教师、律师、医生,甚至其他啤酒商。它的浅青铜色和明显的啤酒花味使它成为圣保罗、明尼阿波利斯和上中西部其他地区自1986年我们第一次酿造以来最受欢迎的酒。l':'http://res.cloudinary.com/ratebeer/image/upload/w_120,c_limit,q_85,d_no%20image.jpg/beer_7344.jpg',
'平均评分':无,
'名称':'summit extra pale ale',
'数值评分':701,
'总体评分':67,
'季节性':无,
'风格':'美式淡啤酒'e',
"风格评分":58,
"风格URL":"/beerstyles/american pale ale/18/",
"标签":['fuggles','cascade','canted','extra pale ale','horizon',
"url":"/beer/summit extra pale ale/7344/",
"加权平均值":3.27}

-``啤酒风格列表`——返回一本包含啤酒风格名称和该页链接的字典。代码::python

>;>;rb.啤酒风格列表()
{修道院配音':'/beerstyles/abbey配音/71/',
修道院配音':'/beerstyles/abbey tripel/72/',

Witbier':'/beerstyles/witbier/48/',
zwickel/keller/landbier':'/beerstyles/zwickel keller-landbier/74/'}

-``beer_style``——从
啤酒风格页。将"url"转换成啤酒风格,并选择"sort"类型:"overall"返回最高等级的啤酒(默认行为)和"trending"返回趋势啤酒。代码::python

>;[b代表rb.啤酒风格的b("/啤酒风格/修道院配音/71/")]
[<;啤酒('/beer/st-bernardus-prior-8/2531/')>;,
<;啤酒('/beer/westmalle配音/2205/')>;,

<;啤酒('/beer/weyerbacher althea/230962/')>;,
<;beer('/beer/cricket hill比利时小批量配音/143244/')>;]

``beer``类
~~~~~~~~~~~~~~~~~

``beer``需要您要查找的啤酒的url,如
``ratebeer.beer``和``ratebeer.get`.

**属性**

-``abv`(浮动):酒精百分比ol
-``啤酒厂`(字符串):啤酒厂的名称
-``啤酒厂`(啤酒厂对象):啤酒厂
-``在``酿造`(啤酒厂对象):如果合同酿造,则实际啤酒厂
-``卡路里`(浮动):啤酒的估计卡路里
-``说明`(字符串):啤酒的de说明:
-``img`u url``(string):啤酒图像的url
-``mean`rating``(float):啤酒的平均评分(共5个)
-``name``(string):啤酒的全名(可能包括啤酒厂
name)
-``num`ratings``(int):评论数_评分``(int):总评分(满分100分)
-``季节`(string):夏季、冬季、秋季、春季、系列、特殊、无
-``风格`(string):啤酒风格
-``风格url`(string):啤酒风格url
-``风格评级`(int):啤酒风格内的评分(满分
100)
-``url`(string):啤酒评分页面的url
-``tags``(字符串列表):给啤酒的标签
-``weighted`u avg``(float):啤酒评分平均值,使用
一些未知算法进行加权(共5个)


e

**方法**

-``get_reviews``--返回啤酒中所有评论的``review``对象的生成器。接受"review-order"参数,该参数可以是"最新"、"最高评分者"或"最高分"。

`review``class
~~~~~~~~~~~~~~~~~~~

``review``返回一个数据类型,该数据类型包含有关特定评审的信息。出于效率的原因,它需要个人的汤
审查。最好不要自己做:用
``啤酒。取而代之的是获得评论`.

**属性**

-``外观`(int):外观评级(共5个)
-``香气`(int):香气评级(共10个)
-``日期`(datetime):评论日期
-``总体`(int):总体评分(20分之一,出于某种原因)
-``味觉`(int):味觉评分(5分之一)
-``评分`(float):评审中提供的另一个总体评分。
不确定这与``总体``有什么不同。
-``味觉`(int):味觉评分(10分之一)
-``文本`(string):实际文本评论的内容。
-``用户位置`(字符串):作者位置
-``用户名称`(字符串):作者用户名

``酿酒厂``类
~~~~~~~~~~~~~~~~~~

``酿酒厂``需要有关酿酒厂的URL。

**属性**

-``城市`(字符串):酿酒厂所在城市:酿酒厂所在国家:酿酒厂所在国家rewery
-``电话`(string):啤酒厂的电话号码
-``类型`(string):啤酒厂的类型。通常是"microbrewery"或
"macrobrewery"
-``url``(字符串):啤酒厂的ratebeer页面的url
-``web`(字符串):啤酒厂主页的url

**方法**

-``获取啤酒``--为啤酒厂生产的每个
啤酒返回"beer"对象的生成器。有些啤酒厂页面列出了由生产的啤酒,除了名称之外没有任何页面、评级或信息。现在,这些啤酒从结果中被省略了。

tests
----

``ratebeer``使用标准的python单元测试库。

-对beer对象进行了彻底检查,以便将来的更改更容易修复。beer对象现在还返回brewery对象,而不是brewery和brewed_at属性的
字符串。还返回啤酒
图像的url和用户分配的标签列表。test.py文件已经更新,以便更清楚地了解故障发生的位置。

>v2.3
~~~~~

-修复了新的RateBeer搜索页。


>v2.2.1
~~~~

-``beer``和``brewery``对象现在是"懒"的,这意味着它们将
不获取Ratebeer页面,除非请求的属性不可用。这将有助于最大限度地减少不必要的请求。
-``ratebeer.search()``现在返回两个"beer"和
``brewery``对象列表。
-``ratebeer.beer`style`list()``现在返回'`beer``和'`brewery``
对象。
-``beer``和'`brewery``对象现在允许自定义属性将要设置。


v2.1
~~~~~

-错误修复和性能增强。
-python 3兼容性。

>v2.0
~~~~

主要更改。

-新的"啤酒"、"评论"和"啤酒厂"类。
-对"ratebeer.py"进行重大改革,添加新的文件
包括职责分离
-新类中的新生成器函数。

v1.4
~~~~~~~
-``reviews``现在是生成器。


v1.3.5
~~~~~~

-对结果的一些改进,特别是对于边缘情况和搜索结果不按预期顺序排列。

v1.3.4
~~~~~~

-啤酒元数据在适当时返回浮动。

v1.3.3
~~~~


-捕获更多元数据。
-更好地处理外国啤酒。
-如果啤酒条目中缺少信息,则其键不会添加到"beer"输出中。


v1.3.2
~~~~~~~

-捕获啤酒名称的别名。

v1.3
~~~~~

-添加了"beer"样式列表和"beer"样式表。

v1.2
~~~~

-一切都符合PEP8。感谢那些优秀的人
`here<;http://codereview.stackexchange.com/questions/69909/ratebeer com scraper>;``uuu.
-小的重构。

v1.1
~~~~~~~

-添加了``reviews`.
-更好的异常(404s不再使用``lookuperror``)

v1.0
~~~~~~

-i初始版本。

许可证
----

**创建者**:Andrew Lilja

**贡献者**:\*Vincent Castellano
(@`Surye<;https://github.com/surye>;``\uu)-python 2和3兼容性
\*Steven A.Cholewiak-一般错误压缩

无许可证<;http://unlicense.org/>;`
(又称公共域)。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java获取TaskCompletionSource工作(Firestore的Android任务)   从PNG文件获取java或信息   neo4j嵌入式版本2.3.8的java NotInTransactionException   OSGI框架的java Eclipse启动配置在Mac上不起作用   java svn:“预提交”挂钩失败,输出错误:   java中ResourceBundle的io查询   java声明变量的最佳方法是什么?遵循下面的例子?   java如何在log4j中获得不同的记录器?   hibernate错误“java.lang.NoSuchMethodError:org.jboss.logging.Logger.getMessageLogger”   swing将JPanel保存为图像   eclipse(Java Spigot)我的PlayerInteractEvent有问题   使用java nio从FileChannel读取的字符串   java Eclipse无法清理生成输出   安卓对Eclipse java组件中的代码行数有限制吗   java Android Studio将应用程序推到手机上,不会让我   针对具有两个编辑器的页面的selenium java代码自动化   Java正则表达式:负前瞻   JavaJPA:基于实例变量将实体动态映射到表