python之爬取页面(urllib库)

urllib库是python内置的http请求库,包含四个模块:

函数 说明
urllib.request 请求模块
urllib.error 异常处理模块
urllib.parse URL解析模块
urllib.robotparser robots.txt模块

robots.txt是Robots协议(网络爬虫排除协议),是互联网界通行的道德模范,基于以下原则:

  • 搜索技术应服务于人类,同时尊重信息提供者的意愿,并维护其隐私权
  • 网站有义务保护其使用者的个人信息和隐私不被侵犯

爬取白度网页

import urllib.request
respone=urllib.request.urlopen('http://www.baidu.com')
html=respone.read().decode('UTF-8')
print(html)

python之爬取页面(urllib库)_第1张图片
核心的爬虫代码:urlopen.request.urlopen(url,data=None,[timeout,]*,cafile=None,capath=None,cadefault=False,context=None)

参数 说明
url 目标资源在网站的位置
data 指明额外的请求信息
timeout 超时时间,秒
cafile/capath/cadefault 实现可信任的CA证书的HTTPS请求
context 实现SSL加密传输
  • data参数只在打开htttp网址时起作用,默认为None,以GET发送请求,设置后请求方式改为POST
  • data参数必须是bytes对象,符合the standard applocation/x-www-form-urlencoded format标准
  • urlib.parse.urlencode()可以将自定义的data转化为标准格式,该函数接受mapping类型参数(dict或两个元素的元组)
    data参数的使用:
import urllib
data=bytes(urllib.parse.urlencode({'world':'hello'}).encode('utf-8'))
response=urllib.request.urlopen('http://httpbin.org/post',data=data)
print(response.read())

在这里插入图片描述
timeout参数的使用:

import urllib
response=urllib.request.urlopen('http://httpbin.org/get',timeout=1)
print(response.read())

在这里插入图片描述

你可能感兴趣的:(Python爬虫)