python数据收集(tsv,获取与处理html)

平面文件包含明文格式的表格数据,每行一个数据记录,每个记录或行有一个或多个字段。这些字段由分隔符,如逗号、制表符或冒号分隔。

平面文件的优点包括:

  • 属于文本文件,因此可以读取。
  • 轻巧。
  • 简单易懂。
  • 可以读/写文本文件的软件随处可见,如文本编辑器。
  • 特别适用于小型数据集。

平面文件的缺点,例如与关系数据库相比,包括:

  • 缺乏标准。
  • 数据冗余。
  • 共享数据可能很麻烦。
  • 不太适用于大型数据集(请在更多信息 中单击 Cornell 链接,查阅”小数据集何时升级为大数据集?")。

import pandas as pd

df=pd.read_csv('bestofrt.tsv',sep='\t')

df.head()

python数据收集(tsv,获取与处理html)_第1张图片

 

使用 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)

python数据收集(tsv,获取与处理html)_第2张图片

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)

python数据收集(tsv,获取与处理html)_第3张图片

os.listdir(folder_name)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(python数据分析)