1.使用到的模块:
在py2中有urllib和urllib2两个模块,但是py3中这两个已经合并成一个,我为了去分清楚二者仍然使用py2中的叫法。
使用urllib爬取数据
1. urlopen( )
打开一个url的方法,返回一个文件对象,然后可以进行类似文件对象的操作
>>> # 导入模块
>>> import urllib
>>>
>>> # 打开指定的url,就好比操作本地文件一样
>>> f = urllib.urlopen('http://www.baidu.com')
>>>
>>> #读取html页面的第一行
>>> firstLine = f.readline()
>>> firstLine
'<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><meta http-equiv="X-UA-Compatible" content="IE=Edge"><meta content="always" name="referrer"><meta name="theme-color" content="#2932e1"><link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" /><link rel="search" type="application/opensearchdescription+xml" href="/content-search.xml" title="\xe7\x99\xbe\xe5\xba\xa6\xe6\x90\x9c\xe7\xb4\xa2" /><link rel="icon" sizes="any" mask href="//www.baidu.com/img/baidu.svg"><link rel="dns-prefetch" href="//s1.bdstatic.com"/><link rel="dns-prefetch" href="//t1.baidu.com"/><link rel="dns-prefetch" href="//t2.baidu.com"/><link rel="dns-prefetch" href="//t3.baidu.com"/><link rel="dns-prefetch" href="//t10.baidu.com"/><link rel="dns-prefetch" href="//t11.baidu.com"/><link rel="dns-prefetch" href="//t12.baidu.com"/><link rel="dns-prefetch" href="//b1.bdstatic.com"/><title>\xe7\x99\xbe\xe5\xba\xa6\xe4\xb8\x80\xe4\xb8\x8b\xef\xbc\x8c\xe4\xbd\xa0\xe5\xb0\xb1\xe7\x9f\xa5\xe9\x81\x93</title>\n'
说明:
read( ) , readline( ) ,readlines( ) , fileno( ) , close( ) :这些方法的使用方式与文件对象完全一样
info( ):返回一个httplib.HTTPMessage对象,表示远程服务器返回的头信息
getcode( ):返回Http状态码。如果是http请求,200请求成功完成;404网址未找到
geturl( ):返回请求的url
如果urlopen( )不能够成功打开一个url,那么会产生一个异常,此时可以通过try来捕获然后处理
2. urlretrieve( )
urlretrieve方法将url定位到的html文件下载到你本地的硬盘中。
如果不指定filename,则会存为临时文件。
urlretrieve()返回一个二元组(filename,mine_hdrs)