网页flash文本抓取器( R星校长:利用URL获取超文本文件并保存至本地 )
优采云 发布时间: 2021-12-08 14:04网页flash文本抓取器(
R星校长:利用URL获取超文本文件并保存至本地
)
@R星校长
1级:使用URL获取超文本文件并保存到本地
当我们想在浏览器中打开一个网页时,需要在浏览器的地址栏中输入该网页的网址,例如在地址栏中输入百度搜索网站的首页网址:,点击确认,浏览浏览器会向服务器发送网页请求;服务器收到请求后,会返回网页的超文本文件。浏览器从服务器接收到网页的超文本文件后,会对其进行解析,然后在窗口中显示超文本文件对应的网页。如下所示。
网页对应的超文本文件如下图所示。
本级我们将使用Python程序实现通过网页的url获取服务器返回的超文本文件并打印出来的功能。
相关信息
课程视频(“网页数据-使用URL获取超文本文件”)
下面详细介绍如何获取网页并保存到本地。
Urlopen() 方法访问 url
Python 提供了 urllib.request 模块来处理网页的 URL。
urllib.request.urlopen(url[, data[, proxies]]):创建一个代表远程url的类文件对象,然后像操作本地文件一样操作这个类文件对象来获取远程数据。
参数说明:一般我们只使用第一个参数。
返回值说明:urlopen()返回一个类文件的对象,返回的结果可以直接用read()、eadline()、readlines()、fileno()、close()等方法使用。 具体用法示例如下:
# coding=utf-8
import urllib.request as req
f = req.urlopen('http://www.baidu.com')
firstLine = f.readline() #读取html页面的第一行
print(firstLine)
print(firstLine.decode('utf-8'))
在:
输出结果:
b'\n'
对比下图所示网页的源代码,输出结果与第一行内容一致。
将远程数据下载到本地 urlretrieve() 方法
urllib.request.urlretrieve(url[, filename[, reporthook[, data]]]): 将 url 所在的服务器端 html 文件下载到本地硬盘。如果未指定文件名,则将其保存为临时文件。
参数说明:一般我们只使用前两个参数。
返回值说明: urlretrieve() 返回一个二元组(文件名,mine_hdrs)。下面给出一个具体的使用示例:
# coding=utf-8
import urllib.request as req
url = 'http://www.baidu.com'
path = 'D:\\baidu.html'
req.urlretrieve(url, path)
输出结果:会在D盘目录下创建一个baidu.html文件。
文件操作
1. open() 函数打开文件
打开(文件[,模式[,缓冲[,编码[,错误[,换行[,closefd=True]]]]]]]])
参数说明:一般我们会用到以下三个参数:
mode 文件打开方式,具体请参考必备知识,以字符串形式输入;
返回值说明: open() 函数返回一个文件对象。
下面给出具体的使用示例:
# coding=utf-8
`f = open("D:\example.txt","w")
以只写方式打开D盘目录下的example.txt文件。如果该文件不存在,则创建该文件。
2. Close() 关闭文件对象的方法
close() 方法用于关闭打开的文件。关闭的文件不能再被读取或写入,否则会触发 ValueError 错误。close() 方法允许多次调用。
当引用文件对象来操作另一个文件时,Python 会自动关闭之前的文件对象。使用 close() 方法关闭文件是一个好习惯。
# coding=utf-8
file = open("D:\example.txt","w")
file.close()
上面的代码关闭打开的文件目标文件。
3. 读取文件,文件对象的read()、readline()、readlines()方法
# coding=utf-8
file = open("D:\example.txt","r")
file.read()
以上代码可以读取example.txt文件的所有内容,打开文件时注意文件对象的读取权限。
4. 写文件,文件对象的write()和writelines()方法
# coding=utf-8
f = open('D:\example.txt','w')
list = ['frog',' ','cat',' ','dog']
f.writelines(list)
f.close()
上述代码可以将列表中的元素写入D盘下的example.txt文件中,文件中会出现如下内容:frog cat dog。
注意: writelines() 方法不会自动为每个元素添加换行符。
编程要求
使用urllib.request模块中的方法完成step1()函数。该功能从国防科技大学本科招生信息网抓取录取分数网页并保存到本地。具体要求如下:
正确使用urllib.request相关函数获取指定url的内容;
将获取到的页面内容写入本地文件,命名为nudt.txt。
开始你的使命,祝你成功!
# -*- coding: utf-8 -*-
import urllib.request as req
import os
import hashlib
# 国防科技大学本科招生信息网中录取分数网页URL:
url = 'http://www.gotonudt.cn/site/gfkdbkzsxxw/lqfs/index.html' # 录取分数网页URL
def step1():
# 请按下面的注释提示添加代码,完成相应功能
#********** Begin *********#
# 1.将网页内容保存到data
webpage = req.urlopen(url) # 按照类文件的方式打开网页
data = webpage.read() # 一次性读取网页的所有数据
# 2.将读data以二进制写模式写入以学号命名的 “nudt.txt” 文件:
outfile = open("nudt.txt", 'wb') # 按二进制写方式打开文件
outfile.write(data) # 将网页数据写入文件
outfile.close()
#********** End **********#