原文跳转:https://blog.youkuaiyun.com/bo_mask/article/details/76067790
官方文档参考:https://docs.python.org/zh-cn/3/library/urllib.request.html
urllib中包括了四个模块,包括
urllib.request,urllib.error,urllib.parse,urllib.robotparser
urllib.request可以用来发送request和获取request的结果
urllib.error包含了urllib.request产生的异常
urllib.parse用来解析和处理URL
urllib.robotparse用来解析页面的robots.txt文件
urllib.request.urlopen()基本使用
urllib.request 模块提供了最基本的构造 HTTP 请求的方法,利用它可以模拟浏览器的一个请求发起过程,同时它还带有处理 authenticaton (授权验证), redirections (重定向), cookies (浏览器Cookies)以及其它内容。好,那么首先我们来感受一下它的强大之处,我们百度为例,我们来把这个网页抓下来。
import urllib.request
response = urllib.request.urlopen("https://www.baidu.com")
print(response.read().decode("utf-8"))
运行结果:
真正的代码只有两行,我们便完成了百度的抓取,输出了网页的源代码,得到了源代码之后呢?你想要的链接、图片地址、文本信息不就都可以提取出来了吗?接下来我们看下它返回的到底是什么,利用 type 函数输出 response 的类型。
通过输出结果可以发现它是一个 HTTPResposne 类型的对象,它主要包含的方法有 read() 、 readinto() 、getheader(name) 、 getheaders() 、 fileno() 等函数和 msg 、 version 、 status 、 reason 、 debuglevel 、 closed 等属性。 得到这个对象之后,赋值为 response ,然后就可以用 response 调用这些方法和属性,得到返回结果的一系列信息。例如 response.read() 就可以得到返回的网页内容, response.status 就可以得到返回结果的状态码,如200代表请求成功,404代表网页未找到等。