爬虫基础知识
最近看到好多太阁的小伙伴活力十足的研究如何使用爬虫去爬取自己心仪的数据,当然啦,也有不少小伙伴表示不知道什么是爬虫,只是听说过。 那什么是爬虫呢?顾名思义,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。现在互联网的畅通无阻,一定程度上促进了信息和数据的自由交流,也不可避免的带来了无效信息流的读入,而爬虫的作用就是从海量数据中提取有价值的部分。 下面谈一谈学习爬虫需要的基础知识,分别是python语言基础, html语言基础以及 Http/REST基础。
Python语言基础
Python, 是一种面向对象、解释型计算机程序设计语言,具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。由于其拥有很多功能强大的库像是urllib,urllib2,Beautiful Soup,Scrapy等等,爬虫模块常常直接调用python的库进行编程,无需复写代码,十分方便。 例如,从百度上爬一段代码,调用urilib2即可快速完成,仅仅几行代码。
import urllib2 // 调用urilib2库
request = urllib2.Request("http://www.baidu.com") // Request类的实例请求数据
response = urllib2.urlopen(request) // 接收数据
print response.read() // 打印数据
NOTE: Python 3 中 urilib2 已被合并至urilib. request调用BeautifulSoup库对爬下来的代码进行分析,BeautifulSoup库可以将文件转化为树形结构,可以通过节点(个人感觉像是标签)访问各个部分。进行假定我们从urilib2中提取了html文件存储在本地
from base import BeautifulSoup // 具体如何调用略有不同
soup = BeautifulSoup(open('html.html')) // 提取html创建 soup 对象
print soup.prettify() // 读取内容输出节点
之后可以对文件内容进行遍历并且查找喜欢的内容啦,再次也强力推荐正则表达式,可以基于html语言下进行数据查找等工作,某些情况下很有用。但是问题来了,什么是Html语言??
HTML语言基础
HTML
HTML语言也被称为” 超文本标记语言”, 包括“头”部分(英语:Head)、和“主体”部分(英语:Body),其中“头”部提供关于网页的信息,“主体”部分提供网页的具体内容。 说的好晕啊,到底是什么东西??
html = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title" name="dromouse"><b>The Dormouse's story</b></p>
<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1"><!-- Elsie --></a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>
<p class="story">...</p>
"""
其中<>
被称作标签,不同的标签有不同的含义。Head
代表头部也就是文件开始之处,title
代表当前子区域的标题,body
是正文,以此类推。
HTTP的客户端大部分是浏览器,但是也可以是别的
爬虫的主要任务之一就是,在爬取网页之后,通过浏览取得的html语言,配合正则表达式,对文件进行过滤,筛选,找到目标信息并整理输出。
刚刚展示了爬虫爬出信息之后能干什么,然而,如何去定位一个资源呢?涉及网站的内容就要用到Http啦。
CSS
HTML能够给你展示一个简单的页面,但是如果你想更改下样式就需要用到CSS 在HTML中添加CSS有3种方式
- 在标签属性中添加
- 用style标签
- 用link标签引入外部CSS文件
Javascript
如果说CSS控制了页面的样式,那么JS就控制了页面的逻辑
- 比如显示什么,有怎样的变化?
- 隔多长时间更新一次?
- 操作一个按钮会有怎样的反馈?
JS代码的添加同样有3种方式
- 通过action属性添加
- 通过script标签添加
- 用script标签引入外部文件进行添加
Http/REST基础
Representational State Transfer(REST)
,即表述性状态转移,它从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表示方式。HTTP
协议,即超文本传输协议,提供的GET、POST、PUT和DELETE方法可以帮助定位链接。
这些命令的搭配使用可以加快爬虫的信息收集速度,提高效率。 某些比较经典的命令可参阅下表
更多关于RESTful的理解可以查看知乎的这篇文章
以后
这些就是爬虫所需掌握的基础啦。另外还有一些优秀的框架(Scrapy)以及高阶的技巧(正则表达式),有时间也可以去试试咯。祝大家在爬虫的世界里爬到想要的Data.