python爬取重定向的网页_python3实现网络爬虫(1)--urlopen抓取网页的html

准备开始写一些python3关于爬虫相关的东西,主要是一些简单的网页爬取,给身边的同学入门看。

首先我们向网络服务器发送GET请求以获取具体的网页,再从网页中读取HTML内容。

我们大家平时都使用网络浏览器,并且它已经成为我们上网不可或缺的软件。它创建信息的数据包,发送他们,然后把我们获取的的数据 显示 成漂亮的图像、声音、视频和文字。我们应该注意的是,浏览器就是代码,而代码是可以分解的,可以分解成许多基本组件,可重用、重写,以及做成我们想要 的任何东西。

那么现在我们就来看看如何从一个网页获取html并显示出来(代码可在pycharm等编辑器 中编写):

#coding:utf-8

from urllib.request import urlopen

html=urlopen("http://tieba.baidu.com/")

print(html.read())

当我们执行这个程序后会得到如下的结果:

b'

content="\xe7\x99\xbe\xe5\xba\xa6\xe8\xb4\xb4\xe5\x90\xa7\xe2\x80\x94\xe2\x80\x94\xe5\x85\xa8\xe7\x90\x83\xe6\x9c\x80\xe5\xa4\xa7\xe7\x9a\x84\xe4\xb8\xad\xe6\x96\x87\xe7\xa4\xbe\xe5\x8c\xba\xe3\x80\x82\xe8\xb4\xb4\xe5\x90\xa7\xe7\x9a\x84\xe4\xbd\xbf\xe5\x91\xbd\xe6\x98\xaf\xe8\xae\xa9\xe5\xbf\x97\xe5\x90\x8c\xe9\x81\x93\xe5\x90\x88\xe7\x9a\x84\xe4\xba\xba\xe7\x9b\xb8\xe8

这是百度贴吧的首页啊,代码还是比较长的,我就粘贴了首页的一些代码。

大家仔细看我们拿回的网页代码会发现,这个程序中拿回来的html中为什么会有些\xe8\xb4\xb4\xe5的东西,其实呢这个是编码问题,大家仔细观察会发现,在html代码最前面有b这个字母,后面的html代码用引号括起来了,这就表示这是个bytes类型的字节序列,在这种类型的序列中,中文会用16进制进行表示,所以我们看不到中文了。关于这个问题呢,是python中的编码问题,我们可以通过译码操作来对bytes进行解码,这就就要用到decode函数了

下面我们只要稍微修改下代码:

#coding:utf-8

from urllib.request import urlopen

html=urlopen("http://tieba.baidu.com/")

print(html.read().decode('utf-8'))

当我们再次执行这个程序会得到如下的结果:

print(html.info())程序执行的结果为:

Content-Type: text/html; charset=UTF-8

Date: Sat, 05 Nov 2016 07:54:57 GMT

P3p: CP=" OTI DSP COR IVA OUR IND COM "

Server: Apache

Set-Cookie: TIEBAUID=cb23caae14130a0d384a57f1; expires=Thu, 31-Dec-2020 15:59:59 GMT; path=/; domain=tieba.baidu.com

Set-Cookie: TIEBA_USERTYPE=6a1c7afddb7bc564bf21c11e; expires=Thu, 31-Dec-2020 15:59:59 GMT; path=/; domain=tieba.baidu.com

Set-Cookie: BAIDUID=071A5C2537394FD906AA0DDCDC3E138D:FG=1; expires=Sun, 05-Nov-17 07:54:57 GMT; max-age=31536000; path=/; domain=.baidu.com; version=1

Tracecode: 32974281920539063562110515

Tracecode: 32974281920790459658110515

Vary: Accept-Encoding

Vary: Accept-Encoding

X-Bd-Id: 12371245289908688739

X-Bd-Oc: 0

X-Bd-Ul: 752bcb03d01cc2fed9326fe0daa239d7

Connection: close

Transfer-Encoding: chunked

虽然这个返回的结果是很多的,但都是以键值对的形式展现给我们的,还是比较清晰易于理解的。

我们看看这句:Content-Type: text/html; charset=UTF-8,它告诉我们这个网页的文本格式是text/html,字符集是utf-8,后面的一些信息大家有兴趣的可以自己去查查资料,这里就不一一说明了。

下面我们来看看网页的状态码:

#coding:utf-8

from urllib.request import urlopen

html=urlopen("http://tieba.baidu.com/")

print(html.getcode())执行这个程序我们得到的结果是:200,这就说明我们的访问的网页是正常的,我们可以安心解析自己需要的东西了。

好了,这一次就介绍到这里,还有很多好玩的就留给大家自己去体验了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值