python爬虫学校笔记第3章基本库的使用(崔庆才版)

3.1 使用urllib

urllib库四个模块:
request:最基本的 HTTP 请求模块,可以用来模拟发送请求。 就像在浏览器里输入网挝 然后回车一样,只需要给库方法传入 URL 以及额外的参数,就可以模拟实现这个过程了。
error: 异常处理模块,如果出现请求错误, 我们可以捕获这些异常,然后进行重试或其他操 作以保证程序不会意外终止。
parse: 一个工具模块,提供了许多 URL 处理方法,比如拆分、解析、 合并等。
robotparser:主要是用来识别网站的 robots.txt 文件,然后判断哪些网站可以爬,哪些网站不 可以爬,它其实用得比较少。

3.1.1发送请求方法

urlopen():

返回一个 HTTPResposne 类型的对象,主要包含 read() 、 readinto()、 getheader(name)、 getheaders() 、 fileno()等方法,以及 msg、 version、 status 、 reason 、 debuglevel、 ιlosed 等属性。 得到这个对象之后,我们把它赋值为 response 变量,然后就可以调用这些方法和属性,得到返回结果的一系列信息了。
调用 read()方法可以得到返回的网页内容,调用 status 属性可以得到返回结果的状态码。
urlopen()函数的 API:
urllib. request. urlopen(url, data=None, [ timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
data参数:data 参数是可选的。 如果要添加该参数,并且如果它是字节流编码格式的内容,即 bytes 类型, 则需要通过 bytes()方法转化。
timeout参数:timeout 参数用于设置超时时间,单位为秒,意思就是如果请求超出了设置的这个时间, 还没有得 到响应, 就会抛出异常。 如果不指定该参数,就会使用全局默认时间。

request:

用法:import urllib.request
request = urllib.request.Request(’https://python.org’)
response = urllib.request.urlopen(request) print(response.read().decode(’utf-8’))
构造方法:
class urllib. request. Request ( url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)
url参数:用于请求url,必传参数.
data参数:如果要传,必须传 bytes (字节流)类型的。 如果它是字典,可以先用 urllib.parse 模块里的 urlencode()编码。
header参数:是一个字典,它就是请求头,我们可以在构造请求时通过 headers 参数直 接构造,也可以通过调用请求实例的 add_header()方法添加。
origin_req_host 参数:请求方的 host名称或者 IP 地址。
unverifiable参数:表示这个请求是否是无法验证的,默认是 False,意思就是说用户没 有足够权限来选择接收这个请求的结果。 例如,我们请求一个 HTML 文档中的图片,但是我 们没有向动抓取图像的权限,这时 unverifiable 的值就是 True。
method参数:是一个字符串 ,用来指示请求使用的方法,比如 GET、 POST 和 PUT 等。

3.1.2处理异常

URLError:来自 urllib 库的 error 模块,它继承自 OSError 类,是 error 异常模块的基类,由 request 模块生的异常都可以通过捕获这个类来处理。可以返回错误原因。
HTTPError:是 URLError 的子类,专门用来处理 HTTP 请求错误,比如认证请求失败等。
有如下3个属性:
code:返回 HTTP 状态码,比如 404 表示网页不存在, 500 表示服务器内部错误等。
reason:同父类一样,用于返回错误的原因。
headers: 返回请求头。

3.1.3解析链接

urlparse():用于实现URL的识别和分段
urlunparse():用于构造一个url,它接受的参数是一个可迭代对象, 但是它的长度必须是 6, 否则会抛出参数数量不足或者过多的问题。
urlsplit():和 urlparse()方法非常相似, 只不过它不再单独解析 params 这一部分,只运回 5 个结果。 上面例子中的 params 会合并到 path 中。
urlunsplit():与 urlunparse()类似,它也是将链接各个部分组合成完整链接的方法,传人的参数也是一个可迭 代对象,例如列表、 元组等,唯一的区别是长度必须为 5。
urljoin():提供一个 base_url (基础链接 ) 作为第一个参数,将新的链接作为第二个参数,该方法会分析 base_url 的 scheme、 netloc 和 path 这 3 个内容并对新链接缺失的部分进行补充,最后返回结果。
urlencode():首先声明了一个字典来将参数表示出来,然后调用 urlencode()方法将其序列化为 GET请求参数。
parse_qs():有了序列化,必然就有反序列化。如果我们有一串 GET 请求参数,利用 parse_qs()方法, 就可以将它转回字典。
parse_qsl():它用于将参数转化为元组组成的列表。
quote():该方法可以将内容转化为 URL 编码的格式。 URL 中带有中文参数时,有时可能会导致乱码的问 题,此时用这个方法可以将巾文字符转化为 URL 编码。
unquote():对URL解码

3.2使用request

3.2.1基本用法

ger()方法:得到一个response对象,返回类型是 requests .models .Response
post()方法.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值