使用Beautifulsoup解析本地html文件

有时候网络上的资源可以通过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')

欢迎关注微信公众号“数据分析师手记”
一起修炼数据分析师吧~~
这里写图片描述

猜你喜欢

转载自blog.csdn.net/fwj_ntu/article/details/78843872