[TOC]

# 百度百科bot

### 简介

搜索百度百科并返回匹配条目的简介，图片等。

------

### 安装

```shell
#pip install baike
```

------

### 简单上手

想要直接在百度百科搜索一个词条，可以从以下的方法中二选一：

1.

```python
>>>from baike import Baike
>>>ret=Baike('你要搜的内容').query()
#返回结果保存在ret里
```

2.

```python
>>>from baike import getBaike
>>>ret=getBaike('你要搜的内容')
#同上
#也可以直接print(getBaike('你要搜的内容'))直接显示
```
------

### 更多功能

1. 通过指定变量`no`为`0`，你可以显示多义词的义项列表：

   ```python
   >>>print(getBaike('Python',no=0))
     Python
   1:计算机程序设计语言
   2:英文单词
   ```
   该变量默认为`1`，此时默认显示第一个搜索命中结果的内容简介。
   如果该词条不是一个多义词，返回`1.(这是一个单义词)`。
   
2. 指定变量`no`为非0整数，你可以显示第`no`个义项的内容简介：
   
   ```Python
   >>>print(getBaike('Python',no=2))
   Python（英文单词）
   python发音：英 [ˈpaɪθən] 美 [ˈpaɪθɑ:n]中文释义：巨蛇，大蟒复数形式：pythons
   ```
   如果`no`>义项数，则会显示最后一个义项。
   如果`no`是负数，则会从后往前计数。类似的，如果`no`<(-义项数)，则会显示第一个义项。
   
3. 指定变量`timeout`为正整数，你可以设定搜索的超时时间，单位为秒：

   ```Python
   >>>print(getBaike('Python',timeout=1))
   ```
   当搜索超时时，标准错误输出`stderr`会显示一条错误信息`超时错误:`，紧接着是引发超时错误的网页链接。

   你可以重定向标准错误输出至文件来实现日志功能。

   请注意由于baike会对关键字先搜索(这是一次网络访问)再访问搜索结果(这是第二次网络访问)，因此对于单次搜索，最大可能不超时的搜索时长可能是`timeout`的两倍。

   该变量默认为`5`

4. 如果搜索没有结果，标准错误输出`stderr`会显示一条错误信息`没有匹配的搜索结果:`，紧接着是没有搜索结果的关键字。类似的，你可以重定向标准错误输出至文件来实现日志功能。

5. 指定变量`pic`为`True`，你可以自动下载这个词条的概要图：

   ```Python
   >>>print(getBaike('Python',pic=True))
   ```

   如果该词条有概要图，那么就会下载到当前目录下，文件名格式为"(词条名)_(义项序号).(图片格式)"。

   该变量默认为`False`。

------

### 依赖

需要requests和lxml。若安装失败可以手动执行：

```python
pip install requests lxml
```

Python 3.6.9 3.7.1 正常运行。在Termux上安装lxml可能存在问题。
