Urllib库是python中一个用于操作URL的模块。 在Python3.X中一些库引用名: import urllib.request import urllib.error import urllib.parse import urllib.urlopen import urllib.urlencode import urllib.quote http.CookieJar urllib.request.Request 快速爬取一个网页: 使用file=urllib.request.urlopen() 打开并爬取一个网页 使用file.read() 读取网页内容 也可以使用file.readline()读取一行内容 具体代码如下:
1 | import urllib.request |
结果: 同样还可以使用txt,等其他形式进行保存。 也可以使用urllib.request.urlretrieve直接对网页进行爬取并自动保存到本地设置的路径。
filename = urllib.request.urlretrieve(“http://strivezs.com”,filename=“F://2.html”)
urllib.request.urlcleanup() #清除urlretrieve()造成缓存
结果: 返回与当前环境有关的信息使用info()进行返回 print(file.info()) 调用的格式为爬取网页.info() 获得爬取网页的状态码使用getcode() print(file.getcode()) 调用格式为:爬取网页.getcode() 获得爬取网页的url使用geturl() print(file.geturl()) 调用格式爬取网页.geturl() 需要注意的是:url标准中只会允许一部分ASCII字符比如数组。字母。部分符号等。而一些其他字符比如汉字等则不符合标准。 如果我们在URL中使用一些其他不符合标准的字符就会出现问题,此时可以使用URL编码的方式解决。 使用urllib.request.quote(网址)进行编码 使用urllib.request.unquote(编码后的网址)进行解码 使用:
1 | import urllib.request |
浏览器的模拟——Headers属性 headers={“User-Agent”, “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36” } 在爬取某些网页时会出现403错误,则证明该网页在robots协议中拒绝了爬虫。 使用build_opener()修改报头:
1 | import urllib.request |
上面这种方法不作具体的介绍了。 使用add_header()添加报头: 这里我更加推荐使用这种方法,因为比较简单好理解。 代码:
1 | import urllib.request |
add_header()是用来添加对应的报头信息 超时设置: 有时我们在访问一个网页时长时间没有响应,系统就会判断超时了,然后就无法打开网页。 但是有时我们需要根据自己的需求来设置超时的时间。一般都设为80秒。 代码:
1 | import urllib.request |
Http协议请求主要分为6种类型,各类型的主要作用如下:
- Get请求:GET请求会通过URL网址传递信息,可以直接在URL中写上要传递的信息,也可以由表单进行传递。如果使用表单进行传递,这表单中的信息会自动转为URL地址中的数据,通过URL地址传递。
- Post请求:可以向服务器提交数据,是一种比较主流也比较安全的数据传递方式,比如登陆时,经常使用Post请求发送地址。
- Put请求:请求服务器存储一个资源,通常要指定存储的位置。
- Delete请求:请求服务器删除一个数据
- Head请求:请求获得服务器报头信息
- Options请求:可以获得当前URL所支持的请求类型