跳到内容

Python 编程/互联网

来自维基教科书,开放世界中的开放书籍


与 Python 捆绑在一起的 urllib 模块可用于 Web 交互。此模块为 Web URL 提供类似文件的接口。

获取页面文本作为字符串

[编辑 | 编辑源代码]

读取网页内容的示例

import urllib.request as urllib
pageText = urllib.urlopen("http://www.spam.org/eggs.html").read()
print(pageText)

逐行处理页面文本

import urllib.request as urllib
for line in urllib.urlopen("https://wikibooks.cn/wiki/Python_Programming/Internet"):
  print(line)

也可以使用 Get 和 Post 方法。

import urllib.request as urllib
params = urllib.urlencode({"plato":1, "socrates":10, "sophokles":4, "arkhimedes":11})

# Using GET method
pageText = urllib.urlopen("http://international-philosophy.com/greece?%s" % params).read()
print(pageText)

# Using POST method
pageText = urllib.urlopen("http://international-philosophy.com/greece", params).read()
print(pageText)

下载文件

[编辑 | 编辑源代码]

要将互联网上页面的内容直接保存到文件,您可以将其 read() 并将其作为字符串保存到文件对象中

import urllib2
data = urllib2.urlopen("http://upload.wikimedia.org/wikibooks/en/9/91/Python_Programming.pdf", "pythonbook.pdf").read() # not recommended as if you are downloading 1gb+ file, will store all data in ram.
file =  open('Python_Programming.pdf','wb')
file.write(data)
file.close()

这将从 这里 下载文件,并将其保存到硬盘上的 "pythonbook.pdf" 文件中。

其他功能

[编辑 | 编辑源代码]

urllib 模块包含其他功能,这些功能在编写使用互联网的程序时可能会有所帮助

>>> plain_text = "This isn't suitable for putting in a URL"
>>> print(urllib.quote(plain_text))
This%20isn%27t%20suitable%20for%20putting%20in%20a%20URL
>>> print(urllib.quote_plus(plain_text))
This+isn%27t+suitable+for+putting+in+a+URL

上面描述的 urlencode 函数将键值对字典转换为要传递给 URL 的查询字符串,quote 和 quote_plus 函数对普通字符串进行编码。quote_plus 函数对空格使用加号,用于提交表单字段数据。unquote 和 unquote_plus 函数执行相反的操作,将 URL 编码文本转换为纯文本。

电子邮件

[编辑 | 编辑源代码]

使用 Python,可以发送与 MIME 兼容的电子邮件。这需要安装 SMTP 服务器。

import smtplib
from email.mime.text import MIMEText

msg = MIMEText( 
"""Hi there,

This is a test email message.

Greetings""")

me  = '[email protected]'
you = '[email protected]'
msg['Subject'] = 'Hello!'
msg['From'] =  me
msg['To'] =  you
s = smtplib.SMTP()
s.connect()
s.sendmail(me, [you], msg.as_string())
s.quit()

这将从 '[email protected]' 发送示例消息到 '[email protected]'。

[编辑 | 编辑源代码]
华夏公益教科书