作者: Erik Marsja
翻译:老齐
与本文相关的图书推荐:《数据准备和特征工程》,本书已经在【 电子工业出版社天猫旗舰店 】发售
本文,我们将通过几步演示如何用Pandas的
read_html
函数从HTML页面中抓取数据。首先,一个简单的示例,我们将用Pandas从字符串中读入HTML;然后,我们将用一些示例,说明如何从Wikipedia的页面中读取数据。
用Python载入数据
对于数据分析和可视化而言,我们通常都要载入数据,一般是从已有的文件中导入,比如常见的CSV文件或者Excel文件。从CSV文件中读入数据,可以使用Pandas的
read_csv
方法。例如:
import pandas as pd
df = pd.read_csv('CSVFILE.csv')
复制代码
上面的方法通常用于导入结构化的数据,比如CSV或者JSON等。
我们平时更多使用维基百科的信息,它们通常是以HTML的表格形式存在。
为了获得这些表格中的数据,我们可以将它们复制粘贴到电子表格中,然后用Pandas的
read_excel
读取。这样当然可以,然而现在,我们要用网络爬虫的技术自动完成数据读取。
预备知识
用Pandas读取HTML表格数据,当然要先安装Pandas了。此处使用pip来安装(也可以使用其它方式,比如Anaconda, ActivePython等),安装方法
pip install pandas
。
注意,如果执行此命令后会自动检查pip是否需要升级,如果有必要请升级。此外,我们也会使用lxml或者BeautifulSoup4这些包,安装方法还是用pip:
pip install lxml
。
read_html
函数
使用Pandas的
read_html
从HTML的表格中读取数据,其语法很简单:
pd.read_html('URL_ADDRESS_or_HTML_FILE')
复制代码
以上就是
read_html
函数的完整使用方法,下面演示示例:
示例1
第一个示例,演示如何使用Pandas的
read_html
函数,我们要从一个字符串中的HTML表格读取数据。
import pandas as pd
html = '''<table>
<tr>
<th>a</th>
<th>b</th>
<th>c</th>
<th>d</th>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
</tr>
</table>'''
df = pd.read_html(html)
复制代码
现在,我们所得到的结果不是Pandas的DataFrame对象,而是一个Python列表对象,可以使用
tupe()
函数检验一下:
type(df)
复制代码
示例2
在第二个示例中,我们要从维基百科中抓取数据。我们要抓取的是关于蟒科的表格数据。
import pandas as pd
dfs = pd.read_html('https://en.wikipedia.org/wiki/Pythonidae'