专栏首页数据云团Python-数据挖掘-urllib库

Python-数据挖掘-urllib库

Python-数据挖掘-搜索引擎

urllib 库是 Python 内置的 HTTP 请求库,它可以看作处理 URL 的组件集合。

一、urllib 库包含四大模块:

① urllib.request:请求模块

② urllib.error:异常处理模块

③ urllib.parse:URL 解析模块

④ urllib.robotparser:robots.txt 解析模块

使用 urllib 快速爬取一个网页:

import urllib.request
# 调用 urllib.request 库的 urlopen() 方法,并传入一个 url
response = urllib.request.urlopen("http://www.baidu.com")
# 使用 read() 方法读取获取到的网页内容
html = response.read().decode("UTF-8")
# 打印网页内容
print(html)

二、分析 urlopen() 方法

上一个例子中的核心爬虫代码:

response = urllib.request.urlopen("http://www.baidu.com")

该代码调用的是 urllib.request 模块中的 urlopen() 方法,它传入了一个百度首页的 URL,使用的协议是 HTTP,,这是 urlopen() 方法最简单的用法。

其实,urlopen() 方法可以接受多个参数

urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)

① url:表示目标资源在网站中的位置,可以是一个表示 URL 地址的字符串,也可以是一个 urllib.request 对象。

② data:用来指明向服务器发送请求的额外信息。

③ timeout:可选参数,该参数用于设置超时时间,单位是秒。

④ cafile/capath/cadefault:用于实现可信任的 CA 证书的 HTTPS 请求。

⑤ context:实现 SSL 加密传输。

三、使用 HTTPResponse 对象

使用 urllib.request 模块中的 urlopen() 方法发送 HTTP 请求后,服务器返回的响应内容封装在一个 HTTPResponse 类型的对象中。

import urllib.request
# 调用 urllib.request 库的 urlopen() 方法,并传入一个 url
response = urllib.request.urlopen("http://www.baidu.com")
print(type(response))

HTTPResponse 类属于 http.client 模块,该类提供了获取 URL、状态码、响应内容等一系列方法。

① geturl():用于获取响应内容的 URL,该方法可以验证发送的 HTTP 请求是否被重新调配。

② info():返回页面的元信息。

③ getcode():返回 HTTP 请求的响应状态码。

import urllib.request
response = urllib.request.urlopen("http://www.baidu.com")
# 获取响应信息对应的 URL
print(response.geturl())
# 获取响应码
print(response.getcode())
# 获取页面的元信息
print(response.info())

本文分享自微信公众号 - 数据云团(SmartData),作者:云团小楠

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-03-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python-数据挖掘-网络异常

    假设有个请求,要爬取1000个网站,如果其中有100个网站需要等待30s才能返回数据,如果要返回所有的数据,至少需要等待3000s。

    小团子
  • Python-数据挖掘-请求伪装

    对于一些需要登录的网站,如果不是从浏览器发出的请求,是不能获得响应内容。这种情况,需要将爬虫程序发出的请求伪装成一个从浏览器发出的请求。伪装浏览器需要自定义请求...

    小团子
  • Python-数据传输-urllib库

    在爬取网页时,通过 URL 传递数据给服务器,传递数据的方式主要分为 GET 和 POST 两种。这两种方式最大的区别在于:GET 方式是直接使用 URL 访问...

    小团子
  • Python爬虫核心模块urllib的学习

    因为在玩Python challenge的时候,有用过这个模块,而且学习这个模块之后也对系统学习网络爬虫有用。 当时查了各种资料...

    Python中文社区
  • Python爬虫之urllib库—进阶篇

    urllib库除了一些基础的用法外,还有很多高级的功能,可以更加灵活的适用在爬虫应用中,比如,用HTTP的POST请求方法向服务器提交数据实现用户登录、当服务器...

    用户2769421
  • Python-数据挖掘-网络异常

    假设有个请求,要爬取1000个网站,如果其中有100个网站需要等待30s才能返回数据,如果要返回所有的数据,至少需要等待3000s。

    小团子
  • Python-数据传输-urllib库

    在爬取网页时,通过 URL 传递数据给服务器,传递数据的方式主要分为 GET 和 POST 两种。这两种方式最大的区别在于:GET 方式是直接使用 URL 访问...

    小团子
  • Python 网络请求模块 urllib 、requests

    Python 给人的印象是抓取网页非常方便,提供这种生产力的,主要依靠的就是 urllib、requests这两个模块。

    大江小浪
  • SocketServer源码学习补充

    coders
  • python3爬虫urllib

    在 Python 中有两种方式可以发送 HTTP 请求,分别是自带的 urllib 库和第三方的 requests 库。

    AngelNH

扫码关注云+社区

领取腾讯云代金券