平面文件包含明文格式的表格数据,每行一个数据记录,每个记录或行有一个或多个字段。这些字段由分隔符,如逗号、制表符或冒号分隔。
平面文件的优点包括:
- 属于文本文件,因此可以读取。
- 轻巧。
- 简单易懂。
- 可以读/写文本文件的软件随处可见,如文本编辑器。
- 特别适用于小型数据集。
平面文件的缺点,例如与关系数据库相比,包括:
- 缺乏标准。
- 数据冗余。
- 共享数据可能很麻烦。
- 不太适用于大型数据集(请在更多信息 中单击 Cornell 链接,查阅”小数据集何时升级为大数据集?")。
import pandas as pd
df=pd.read_csv('bestofrt.tsv',sep='\t')
df.head()
使用 HTML 文件的两个主要方法是:
- 将 HTML 文件保存到计算机中(例如使用 Requests 库),并将文件读入
BeautifulSoup
构造函数中 - 将 HTML 响应内容直接读入
BeautifulSoup
构造函数(例如再次使用 Requests 库)
HTML 文件结构
超文本标记语言(或 HTML)是为万维网创建文档的语言。
提取html文件
https://www.crummy.com/software/BeautifulSoup/bs4/doc/#searching-the-tree
pip install beautifulsoup4
from bs4 import BeautifulSoup
import os
import pandas as pd
# 字典列表可以逐个创建文件,随后转化为一个 DataFrame
df_list = []
folder = 'rt_html'
for movie_html in os.listdir(folder):
with open(os.path.join(folder, movie_html)) as file:
# 这里是你的代码
# 注释:正确操作需要花费 ~15 秒运行
# 添加到字典列表中
df_list.append({'title': title,
'audience_score': int(audience_score),
'number_of_audience_ratings': int(num_audience_ratings)})
df = pd.DataFrame(df_list, columns = ['title', 'audience_score', 'number_of_audience_ratings'])
df_solution = pd.read_pickle('df_solution.pkl')
df.sort_values('title', inplace = True)
df.reset_index(inplace = True, drop = True)
df_solution.sort_values('title', inplace = True)
df_solution.reset_index(inplace = True, drop = True)
pd.testing.assert_frame_equal(df, df_solution)
HTTP(超文本传输协议)
HTTP,全称是超文本传输协议,是 Web 浏览器(如 Chrome 或 Safari)和 Web 服务器(基本上指存储网站内容的计算机)之间相互沟通的语言。每次打开网页或下载文件或观看视频时,都是 HTTP 完成了这些任务。
HTTP 是一个请求/响应协议:
- 你的计算机,也就是客户端,向服务器发送一个需要某个文件的请求。例如在这节课中:"我需要文件 1-the-wizard-of-oz-1939-film.txt "。GET 是用于检索数据的 HTTP 请求方法(有多个)名称。
- Web 服务器发回响应。如果请求有效:"这是你请求的文件:",然后是 1-the-wizard-of-oz-1939-film.txt 文件的内容。
利用HTTP下载资源
pip install request
import requests
import os
# Make directory if it doesn't already exist
folder_name = 'ebert_reviews'
if not os.path.exists(folder_name):
os.makedirs(folder_name)
ebert_review_urls = ['https://d17h27t6h515a5.cloudfront.net/topher/2017/September/59ad9900_1-the-wizard-of-oz-1939-film/1-the-wizard-of-oz-1939-film.txt',
'https://d17h27t6h515a5.cloudfront.net/topher/2017/September/59ad991e_100-battleship-potemkin/100-battleship-potemkin.txt']
response=request.get(url)
os.listdir(folder_name)