准备开始写一些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,这就说明我们的访问的网页是正常的,我们可以安心解析自己需要的东西了。
好了,这一次就介绍到这里,还有很多好玩的就留给大家自己去体验了。