python3 小爬虫 - 小试牛刀

解脱束缚

网上内容和新闻实在是太多了,每天追剧要刷网站,每天看新闻要刷网站,每天重复的刷网站。一个个到网站上去看比较麻烦,而且每次都有很多广告,心情会变差。本人也比较懒,就想到搞个小爬虫把自己喜欢的内容快速收集,方便看也不用担心广告烦。

能做爬虫的语言实在是太多。用 python 主要考虑原来知道一点,而且作为脚本语言很方便,成熟库N多想要什么就有什么。作为替换 shell 脚本也非常棒的选择,日常简单处理工作内容非常方便。

准备开始

作为一个脚本语言考虑,简单和方便应该作为第一位。还是很容易上手的。

window 7 没有python需要自己安装,mac自带有python2和3的版本。

官网地址: https://www.python.org 安装: 有两个大版本 2 和 3,作为脚本直接用最新版本,不用纠结。

macpython3反正有,不知道是不是原来自己安装的,反正有了。看系统里有没有python和版本号

mac 终端
$ python --version     // mac 默认的版本
Python 2.7.10
$ python3 --version    // mac python 3 的命令
Python 3.5.1

win cmd
> python --version
Python 3.5.2

python3中自带的库urllib可以抓去网站

简单开始

直接在终端中输入python3即可进入python的环境。windows中直接输入python

sunseeddembp:~ sunseed$ python3
Python 3.5.1 (v3.5.1:37a07cee5969, Dec  5 2015, 21:12:44) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

可以看到上面的信息,说明可以玩了。粗暴方法,直接关闭终端(命令行),或是优雅的告诉系统exit() 退出

exit() # 退出python

小试牛刀

先抓去一个网站玩玩,抓自己的blog http://www.moguf.com,内容保存到mogufhome.html文件中。

import  urllib.request  

data = urllib.request.urlopen("http://www.moguf.com").read()
data = data.decode()
f = open("./mogufhome.html", 'w')  
print(data, file=f)

非常简单就把内容抓取下来,可以打开文件看里面的内容。

命令说明

上面的命令不多,就5句话搞定。

  • 1、告诉python我要个 urllib.request 功能库,可以请求网站给数据的功能
  • 2、读取 http://www.moguf.com 网站的内容,保存到 data 里。这里http:// 是必须的,不会像浏览器一样,给我们补全。
  • 3、重新解码,就是给人看的内容。
  • 4、创建一个文件mogufhome.html
  • 5、把数据输出到文件中。

直接运行py脚本

上面的方法有个缺陷,每次要打一大堆命令也是个麻烦事情。所以可以考虑直接保存一个文件,运行这个脚本。创建getmogufhome.py 把上面的内容复制进去。

$ cat > getmogufhome.py
import  urllib.request  

data = urllib.request.urlopen("http://www.moguf.com").read()
data = data.decode()
f = open("./mogufhome.html", 'w')  
print(data, file=f)
^C
$

保存到文件后,直接可以运行这个文件。

$ python3 getmogufhome.py

如果是windows默认安装,会自动关联py文件,直接双击文件就能运行很方便。

一些小麻烦

有些情况会出现一下错误

编码错误

UnicodeEncodeError: 'ascii' codec can't encode characters in position 59-61: ordinal not in range(128)

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'gbk' codec can't encode character '\xa9' in position 19551:
 illegal multibyte sequence

这些信息是说,变成我们能看得懂的地方有些问题。需要个编码工具库codecs帮忙。

import  urllib.request
import codecs
data = urllib.request.urlopen("http://www.moguf.com").read()
data = data.decode("utf-8")
f = codecs.open("./mogufhome.html", 'w', "utf-8")  
print(data, file=f)

把所有的内容都转换成 UTF-8 的格式

结束

python3确实很方便,寥寥几句就能获得自己想要的内容。