入门python爬虫需要的基础知识:html,python,正则表达式。本文将着重围绕与爬虫相关的内容展开介绍。
基础知识
1.html基础知识
2. Python基础知识
3. 正则表达式
基础知识
1. html基础知识
html有很多种分类,在这里,对于初学爬虫者可以简单地把html分为静态网页和动态网页。简单来说,动态网页就是常常看到的花里胡哨的、交互丰富的网页,适于更新频繁的内容;相对的,静态网页则交互性较差,适于不常更新的内容。
这一点,是入门爬虫最基本,也是我认为书写爬虫时的第一步判断。进一步的说,书写爬虫的第一步判断是对爬取目标的动静态性进行区分。后面在例子当中会体现出来。
html基本语法相对简单固定,教程也很多,例如W3School
,比较快的上手方法是先大概浏览一遍这些教程讲了html的哪些内容,然后随便拿来一个手上的网页或者你经常看的网页,右键点击“查看元素”。
然后鼠标放在哪部分代码就可以看到对应网页的部分颜色高亮,通过这样简单的操作,可以清楚快速的知道这些代码到底对应了什么样的显示效果等等。如果想的话,可以自己写一个简单的静态网页练习练习语法。
这一步是我们写爬虫前对目标网页进行基本地认识和了解,不可或缺。
2. Python基础知识
Python是现在受很多程序猿喜欢和推崇的语言,优点良多。对于Python初学者,可以看看廖大大写的教程。就书写Python爬虫来说,对于有其他编程语言经验的人群,建议先学习Python的各种数据类型,以及基础的两个包Numpy和Pandas,掌握基本的数据输入输出以及存储等等;然后其他基本的语法根据自己的兴趣或者按照教程进行学习。
掌握Python语法基础还不够,对于写爬虫来说,需要了解有哪些Python的开源库可以调用,这里介绍Requests、Selenium两个库:
(1) Requests
这里帮助你快速上手Requests库。这里是官方提供的一段示例代码:
简单来说,requests可以帮助你实现访问网页、获取网页相关信息等等,非常方便,更多的功能参考官方手册~
(2) Selenium
Selenium是一款自动化的浏览器,可以根据用户需求通过代码控制该浏览器的行为。这款浏览器可以调用你电脑上的可视界面的浏览器,例如Firefox等,也可以调用无头浏览器,例如PhantomJS。这款浏览器可以帮助测试者进行各种自动化操作。换句话说,可以很方便的模拟用户的各种操作,例如:按钮点击、网页下滑等等各种动态操作。方便我们对动态网页进行爬取和分析。
3. 正则表达式
字符串是构成网页的基本要素,包括网页链接,网页内容以及Xpath等等 。
XPath 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航。
而正则表达式可以帮助我们对字符串进行提取、批量处理等等。简单地说,正则表达式就是提取字符串的规则。
为什么要用正则表达式
对于爬虫来说,虽然Xpath方便对网页的各个部分进行定位,但是该方法有利有弊,利在于快速、方便定位固定位置的一些控件,例如按钮等,弊在于提取字符串时,可能无法取出,原因在于可能目标文本的索引是变化的,或者是在批量处理网页时,索引不固定,导致程序中止出错。
这个时候,就需要我们对目标文本/字符串的上下文规则进行分析,可以通过查看多个目标统一存在的规律性,也就是我们小学就在学的能力——找规律。
正则表达式的原则
找规律,听起来容易,但是在爬虫这里就不那么容易了,小学考察找规律的一个题目只有一个答案,而在这里,目标文本/字符串的上下文规律可能有无数种。关键在于,正则表达式设计者的视角。有的规则很“强大”,强大在三点:一是鲁棒性,指的是能够适用于该目标文本的批量网页处理;其二在于有效性,也就是说正则匹配后得到的文本/字符串和我们目标文本的差别,举个反面的例子,一个想要提取出博客发布日期的正则表达式,却包含了博客网站上的广告等等信息,就“目标——结果”之间的差别来看,这个表达式的有效性并不强;其三在于高效性,指的是一个表达式可以提取出尽可能多的目标信息,类似的,我们要提取出同类型的批量博客发布的日期、作者、标题,那么三个正则表达式提取三个目标的效率肯定要低于一个表达式同时提取。所以设计正则表达式需要多一些观察和实践,找到尽量强大的表达式。