返回介绍

第9单元 上网

发布于 2024-01-28 22:01:16 字数 1463 浏览 0 评论 0 收藏 0

根据WorldWideWebSize网站1的统计结果,能被索引的Web至少包含48.5亿网页2。其中部分网页可能是我们感兴趣的。urllib.request模块包含从Web下载数据的函数。可以手动下载单个数据集,将其保存到缓存目录中,再使用Python脚本进行分析,不过这种方法并不可取。另外,某些数据分析项目需要自动化迭代或递归下载。

1www.worldwidewebsize.com

2网页数量的统计结果是动态变化的,在翻译此处时所查到的最新数据是47.2亿。——译者注

无论要从Web上获取什么,第一步都是用urlopen(url)函数打开网址,以获得打开网址的句柄。一旦打开了网址,对应的网址句柄就类似于以只读方式打开的文件句柄:可以使用函数read()、readline()和readlines()来访问数据。

鉴于Web和互联网的动态特性,无法打开网址的概率要高于无法打开本地文件的概率。因此,务必将任何与Web相关的函数调用都包含在一个异常处理的语句中:

import urllib.request
try:
  with urllib.request.urlopen("http://www.networksciencelab.com") as doc:
    html = doc.read()
    # 如果数据读取成功,连接就会自动关闭
except:
  print("Could not open %s" % doc, file=sys.err)
  # 不要假装已经读到了文件!
  # 一定要在这里执行错误处理程序

当数据集部署在需要身份验证的网站上时,就不能使用urlopen()函数了。此时,应使用提供安全套接层(SSL,例如OpenSSL)的模块。

urllib.parse模块提供了用于解析和构建网址的友好工具。函数urlparse()将网址分成六个元素的元组:协议(比如http)、网络地址、文件系统路径、参数、查询和片段:

   import urllib.parse
   URL = "http://networksciencelab.com/index.html;param?foo=bar#content"
   urllib.parse.urlparse(URL)

➾ ParseResult(scheme='http', netloc='networksciencelab.com',path='/index.html', params='param', query='foo=bar',fragment='content')

函数urlunparse(parts)使用urlparse()的返回值parts构造有效的网址。如果在解析一个网址之后再将其重新构建,则结果可能与原始网址稍有不同,但功能上是完全等效的。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文