使用Beautifulsoup解析本地html文件

2,369 阅读4分钟

有时候网络上的资源可以通过html保存在本地,然后再解析本地html文件,提取有用的信息。基本的实现思路如下:

1. 打开html文件
比如,待解析的html文件保存在d盘。这里插一句,要读一个东西,首先得知道这东西在哪里。如果它在万维网上,那么我们需要知道URL。

URL(Uniform Resoure Locator),统一资源定位符。是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。它是一个网络路径。

本地路径,与网络路径相对应。又称物理路径,指的是某一台计算机本地的路径,以盘符开头,例如C:\、D:\temp等等。

此处,我们要想打开本地html文件,首先得告诉程序你的文件在哪里。

path = 'd:/Download/mydoc.html'

然后,使用open函数打开文件。

htmlfile = open(path, 'r', encoding='utf-8')

2. 读取html的句柄内容
这里所说的“句柄内容”就是指html文件里面的内容。为什么要这么做?

谨记,Beautifulsoup的第一个参数是一个html句柄内容,而不是html文件。所以我们要把html文件里的内容读出来,然后传递给它。

htmlhandle = htmlfile.read()

3. 使用Beautifulsoup解析
调用Beautifulsoup解析功能,解析器使用lxml。

from bs4 import Beautifulsoup

soup = Beautifulsoup(htmlhandle, 'lxml')

4. 抽取有用的字段
为了便于后期的数据分析,小量数据,数据分析师最爱用Excel。所以,此处我们利用python中pandas包的dataframe数据框架,来存储html文件中目标字段的值。

这次,尝试了使用以下这种方式,向dataframe追加新的行。

import pandas as pd

count = 0
result = pd.DataFrame({},index=[0])
result['author'] = ''
result['title'] = ''
result['source'] = ''
new = result
for item in soup.find_all('tr'):
	if 'AU ' in item.get_text():
		author = item.get_text()
		new['author'] = author
	elif 'TI ' in item.get_text():
		title = item.get_text()
		new['title'] = title
	elif 'SO ' in item.get_text():
		source = item.get_text()
		new['source'] = source
		count += 1
		result = result.append(new,ignore_index=True)
print(count)

最后,将dataframe中的数据保存到excel中去,文件写入真是贼方便。给python打call,6666666…

result.to_excel('d:result.xlsx')

欢迎关注微信公众号“数据分析师手记”
一起修炼数据分析师吧~~
👏👏👏再看看我们以前的文章😃😃😃
🌺 Excel中数据分析工具库-相关系数篇
🌺 干货,手把手教会你做相关性分析
🌺 5年数据分析路,小结。
🌺 用户细分及画像分析
🌺 K-近邻算法及实践

欢迎关注,微信公众号“数据分析师之家
扫描二维码 关注我们
💁提供职业规划、简历指导、面试辅导服务哦
QQ交流群:254674155
在这里插入图片描述