1.1 抓取网页
首先我们要明确,抓取网页的过程与人浏览网页过程类似。而我们首先要知道URL的构成。
什么是URL
【协议】:【ip】【主机资源具体地址】
如:http://myh4ck1ife.cn/categories/
超文本传输http协议,域名为myh4ck1ife.cn,目录为categories。
通过指定URL抓取网页内容
我们举个例子扒一页网页下来
import urllib2
response = urllib2.urlopen("http://www.baidu.com")
print response.read()
我们运行一下即可得到结果:
我们下面开始分析代码
response = urllib2.urlopen("http://www.baidu.com")
这里我们利用的是urllib2库中的urlopen方法,这里我们由第一节可以知道这是一个http协议的网址,urlopen一般接受三个参数,它的参数如下:
urlopen(url, data, timeout)
第一个参数url即为URL,第二个参数data是访问URL时要传送的数据,第三个timeout是设置超时时间。
第二三个参数是可以不传送的,data默认为空None,timeout默认为 socket._GLOBAL_DEFAULT_TIMEOUT
第一个参数URL是必须要传送的,这里我们传送了百度的URL,执行urlopen方法之后,返回一个response对象,返回信息便保存在这里面。
print response.read()
response对象有一个read方法,可以返回获取到的网页内容。
如果不加read直接打印会是什么?答案如下:
<addinfourl at 139728495260376 whose fp = <socket._fileobject object at 0x7f1513fb3ad0>>
这里如果不加read方法的话,打印出来的就是对该对象的描述。
其实上面的urlopen是可以传入request请求的