python爬虫(urllib简介)

来源:互联网 发布:快速赚钱 知乎 编辑:程序博客网 时间:2024/06/06 09:25

urllib模块

通过url打开任意资源,官方链接

urllib模块提供一个高级接口,可以在通过url在网上获取数据。其中,urlopen()函数类似于内置函数open(),但接受的是url不是文件名。只能打开用于读取的url,不能任何查找操作。

urllib.urlopen(url[, data[, prpxies[, context]]])

其中,url是网址,data表示以post方式提交到url的数据,proxies用于设置代理。

import urllibprint urllib.urlopen("http://www.baidu.com").read()

urlopen提供如下方法:

  1. read()、readline()、readlines()、fileno()、close() 这些方法具有与文件对象相同的接口
  2. info() 返回类mimetools的一个实例。包含与URL相关联的元信息的消息。参见mimetools模块的描述。
  3. etcode() 返回以响应发送的http状态码,如果是http请求,200表示成功,404表示网址未找到。不是http的请求,则不返回。
  4. geturl() 返回页面真实的url,有时服务器会重定向到其他的url上,urlopen透明的处理这种情况,但有的操作也许需要真实url。

urllib.urlretrieve(url[, filename[, reporthook[, data]]])

复制一个由URL指向本地文件的网络对象。

url = "http://www.baidu.com"local = "./bd.html"urllib.urlretrieve(url, local)

urllib._urlopener

公共函数urlopen()和urlretrieve()创建一个FancyURLopener类的实例,并使用它执行请求的操作。为了覆盖这个功能,程序员可以创建一个URLopener或FancyURLopener的子类,然后在调用所需函数之前,给urllib._urlopener分配一个类的实例。

class AppURLopener(urllib.FancyURLopener):  version = " App / 1.7”  urllib。_urlopener = AppURLopener()urllib.urlcleanup()

其他一些方法:

  • urllib.quote(string[, safe]):对字符串进行编码。参数safe指定了不需要编码的字符;
  • urllib.unquote(string) :对字符串进行解码;
  • urllib.quote_plus(string [ , safe ] ) :与urllib.quote类似,但这个方法用’+’来替换’ ‘,而quote用’%20’来代替’ ‘
  • urllib.unquote_plus(string ) :对字符串进行解码;
  • urllib.urlencode(query[, doseq]):将dict或者包含两个元素的元组列表转换成url参数。例如 字典{‘name’: ‘dark-bull’, ‘age’: 200}将被转换为”name=dark-bull&age=200″
  • urllib.pathname2url(path):将本地路径转换成url路径;
  • urllib.url2pathname(path):将url路径转换成本地路径;

版本的调整

通过 python --version 查看当前默认的python版本。

版本2.7.9开始,对于HTTPS URIs,urllib默认执行全部需要的证书和主机名的检查。对于早于2.7.9的Python版本,urllib不会验证HTTPS uris的服务器证书。

3.x以上的版本urllib和urllib2已经合并为一个urllib库。

参考:
http://python.jobbole.com/81478/ (原地址找不到了)
https://www.cnblogs.com/wly923/archive/2013/05/07/3057122.html
https://docs.python.org/2/library/urllib.html#module-urllib