个Python爬虫程序
下面使用 Python 内置的 urllib 库获取网页的 html 信息。注意,urllib 库属于 Python 的标准库模块,无须单独安装,它是 Python 爬虫的常用模块。
获取网页html信息
1) 获取响应对象
向百度(http://www.baidu.com/)发起请求,获取百度首页的 HTML 信息,代码如下:上述代码会返回百度首页的响应对象, 其中 urlopen() 表示打开一个网页地址。注意:请求的 url 必须带有 http 或者 https 传输协议。#导包,发起请求使用urllib库的request请求模块
import urllib.request
# urlopen()向URL发请求,返回响应对象,注意url必须完整
response=urllib.request.urlopen('http://www.baidu.com/')
print(response)
输出结果,如下所示:
上述代码也有另外一种导包方式,也就是使用 from,代码如下所示:<http.client.HTTPResponse object at 0x032F0F90>
#发起请求使用urllib库的request请求模块
from urllib import request
response=request.urlopen('http://www.baidu.com/')
print(response)
2) 输出HTML信息
在上述代码的基础上继续编写如下代码:
#提取响应内容
html = response.read().decode('utf-8')
#打印响应内容
print(html)
输出结果如下,由于篇幅过长,此处只做了简单显示:
<!DOCTYPE html><!--STATUS OK--> <html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta content="always" name="referrer"><meta name="theme-color" content="#2932e1"><meta name="description" content="全球的中文搜索引擎、致力于让网民更便捷地获取信息,找到...">...</html>
通过调用 response 响应对象的 read() 方法提取 HTML 信息,该方法返回的结果是字节串类型(bytes),因此需要使用 decode() 转换为字符串。程序完整的代码程序如下:
import urllib.request
# urlopen()向URL发请求,返回响应对象
response=urllib.request.urlopen('http://www.baidu.com/')
# 提取响应内容
html = response.read().decode('utf-8')
# 打印响应内容
print(html)
通过上述代码获取了百度首页的 html 信息,这是最简单、最初级的爬虫程序。后续我们还学习如何分析网页结构、解析网页数据,以及存储数据等。
常用方法
在本节您认识了个爬虫库 urllib,下面关于 urllib 做简单总结。
1) urlopen()
表示向网站发起请求并获取响应对象,如下所示:
urllib.request.urlopen(url,timeout)
urlopen() 有两个参数,说明如下:
url:表示要爬取数据的 url 地址。
timeout:设置等待超时时间,指定时间内未得到响应则抛出超时异常。
2) Request()
该方法用于创建请求对象、包装请求头,比如重构 User-Agent(即用户代理,指用户使用的浏览器)使程序更像人类的请求,而非机器。重构 User-Agent 是爬虫和反爬虫斗争的步。在下一节会做详细介绍。urllib.request.Request(url,headers)
参数说明如下:
url:请求的URL地址。
headers:重构请求头。
3) html响应对象方法
bytes = response.read() # read()返回结果为 bytes 数据类型
string = response.read().decode() # decode()将字节串转换为 string 类型
url = response.geturl() # 返回响应对象的URL地址
code = response.getcode() # 返回请求时的HTTP响应码
4) 编码解码操作
#字符串转换为字节码
string.encode("utf-8")
#字节码转换为字符串
bytes.decode("utf-8")
- 随机文章
- 深圳 马尔代夫 报价(深圳出发,旅游马尔代夫,最新报价!)
- 广州 到 马尔代夫(从广州飞往马尔代夫的旅程)
- 马尔代夫风筝图片(壮美马尔代夫:风筝舞动绚丽海天间)
- 去马尔代夫复杂吗(考验胆量:实地探访马尔代夫难度大?)
- 广东马尔代夫地图(探索广东马尔代夫风光:详细地图指引)
- 妈妈来了马尔代夫(母亲重返马尔代夫:孩子们的良好期待)
- 旅游文章马尔代夫(迷失在东瀛的度假天堂——马尔代夫!)
- 岛国乐园马尔代夫(马尔代夫——一个赏心乐事的海上天堂)
- 株洲马尔代夫视频(株洲游客马尔代夫拍下美景,惊艳全网)
- 广东马尔代夫美誉(广东有一个被誉为“马尔代夫”的地方)
- 中国马尔代夫泉州(泉州打造中国自己的马尔代夫旅游胜地)
- 江西连江马尔代夫(江西海外美景,探秘连江马尔代夫之旅)
- 泥鳗 马尔代夫(后的:马尔代夫的泥鳗文化)
- 梦幻马尔代夫地图(探索马尔代夫神秘美景:精美地图详解)
- 广西马尔代夫捕鱼(广西渔民在马尔代夫海域捕获大量鱼类)
- 春节马尔代夫海岛(春节马尔代夫旅游,享受热带海岛风情)
- 潍坊山东马尔代夫(山东潍坊打造“马尔代夫”,美哭了!)
- 林州马尔代夫旅游(林州的马尔代夫之旅,海岛度假好去处)
- 六月 马尔代夫(六月马尔代夫游:蓝天碧海的世外桃源)
- 斐济对比马尔代夫(斐济与马尔代夫:你应该选择哪一个?)
- 宜昌马尔代夫视频(宜昌旅游局发布惊艳马尔代夫风景视频)
- 迪拜马尔代夫厨房(迪拜马尔代夫:一起探索当地厨房文化)
- 随团旅游马尔代夫(马尔代夫随团游,轻松玩转南太平洋!)
- 资兴马尔代夫农庄(资兴市民与马尔代夫农庄建立友好关系)
- 闪亮马尔代夫图片(绚烂马尔代夫:缤纷海底世界美轮美奂)
- 马尔代夫丛林大海(探索马尔代夫的自然奇观:丛林和大海)
- 浙江 马尔代夫(浙江打造马尔代夫式度假胜地)
- 马尔代夫休闲娱乐(马尔代夫度假:享受休闲娱乐舒适体验)
- 香港前往马尔代夫(香港出境游热门目的地之一:马尔代夫)
- 荥阳 马尔代夫(荥阳籍游客在马尔代夫度假遭遇意外,获救后感慨万千)
