20170428:
由于moozik.cn更换了程序,文中代码某些可能已失效


我学习的方法是,先实践后理论,下面就是我最开始做爬虫的时候写的小东西。

#引用urllib.request用于获取网页内容
import urllib.request
#引用re用于使用正则表达式匹配标题
import re

#发起请求
response = urllib.request.urlopen('http://moozik.cn')
#读取网页内容使用utf-8解码
html = response.read().decode('utf-8')
'''
这一行是上面三行代码的浓缩版,把http请求,读取网页数据,转码在一行内执行
html = urllib.request.urlopen('http://moozik.cn').read().decode('utf-8')
'''
#使用正则匹配网页title
title = re.findall("<title>(.*?)</title>",html)
#输出结果
print(title[0])

import

用于引用py模块(py文件)、库、包。大部分的python扩展都是python写的,还有用C写的,还有内置在python中的模块,比如sys模块。使用import引用他们之后,就可以在当前文件中使用已经预定义好的功能和方法。当然你也可以自己写模块。

decode('utf-8')

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

在html文件中,在header标签中都会有类似上面的meta标签。标签的功能是告知浏览器网页的编码类型,以便浏览器用正确的编码进行解释,否则会出现乱码。当前常见的编码类型有:GBK,GB2312,UTF-8。其中utf-8是最常见的,因为他支持所有语言。
你可以试着在没有解码的情况下,使用print()打印html的内容,看一看没有解码的网页是怎样的,里面的中文应该是类似\xe4\xb8\x89\xe6\x9c\xa8\xe6\x88\x90\xe8\x88\x9f,这一段是“三木成舟”没有解码的样子。

正则表达式
re是python的正则表达式模块,是python的标准库,是学习python爬虫绕不开的一关。有人说他很难学,其实我觉得,如果学python是为了在网页中抓取数据,那么是不难学的,在正则表达式大神的眼里,正则确实有很多奇淫技巧,可是常用的也并没有太难。这里给出一些资料供学习。

http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html
http://tool.chinaz.com/regex/
http://www.runoob.com/regexp/regexp-tutorial.html

print()

从python2到python3,print变为了带有括号的形式,这也是辨别python程序所用版本最明显的区别。print()强大的地方是,不管是什么都可以print()一下,不管是字符串,列表,字典,对象,统统可以打印。这也是我调试程序常用的方法,在关键地方使用print()打印变量来查看程序的执行是否与预想的一致。

最后修改:2017 年 04 月 28 日 12 : 41 AM