经济学专业学习Python之爬虫

除非是碰到数据资源丰富的“土豪爸爸”做导师,否则越来越多经济学专业的研究生甚至本科生被导师“要求”学习爬虫的技巧。那么对于经济学学生来说,如何利用 Python获取网页中的信息,完成所谓的爬虫作业?

HTML :了解网页的基础,知道爬取的对象是什么


现如今,我们已经习惯了打开浏览器查看各式各样的网络内容,而浏览器中所出现的所有内容,都可以简单概括为 HTML+ CSS+Javascript:其中

(1)HTML 用于储存网页内容;

(2)CSS 用于储存网页的样式;

(3)Javascript负责网页的交互。

所以,要获取数据,就必须要对 HTML下手。学习和了解 HTML 成为了必不可少的知识。当然,你也无需担心或者抱怨“又要学一门新的语言”,HTML 是一种标记型语言,所谓标记型语言就类似于:

Hello HTML

非常容易理解,

就是一个标记,标记里面的内容属于h1,也就是一级标题的意思。不同的标记代表不同的功能,比如h2 就代表二级标题,p 就代表段落等等,浏览器根据这个标记去显示内容的样式。所以对于爬取数据来说,只要知道哪个是标记,哪个是内容,并且能够找到自己需要的内容在哪个层级的标记下就可以了。


浏览器的开发者界面:获取网页背后的代码

能看懂HTML,你还需要知道去哪里看到这些代码。这时候你就需要学习如何使用浏览器的开发者模式了。Chrome 浏览器是比较常用的一款能够较好显示网页源码的软件,你可以在界面右上角选择更多工具,然后打开开发者工具:

打开以后,你就能够看到网页的源代码了。浏览器就是根据这些代码,显示出网页的。

Find Occupations

总的来说,Chrome 提供了这么几个板块的功能[1]:

Elements:允许我们从浏览器的角度看页面,也就是说我们可以看到chrome渲染页面所需要的HTML、CSS和DOM(Document Object Model)对象。也就是为我们显示源码。

Network: 可以看到页面向服务器请求了哪些资源、资源的大小以及加载资源花费的时间,当然也能看到哪些资源不能成功加载。此外,还可以查看HTTP的请求头,返回内容等;

Resources: 对本地缓存(IndexedDB、Web SQL、Cookie、应用程序缓存、Web Storage)中的数据进行确认及编辑;记录了Cookie等信息,可以用于爬取一些需要登录的网址。

以下还有些我们并不常用,但是可以了解一下:

Sources: 主要用来调试js(对于我们经济学学生学习爬虫来说,并不那么重要);

Timeline: 提供了加载页面时花费时间的完整分析,包括所有事件(从下载资源到处理Javascript,计算CSS样式等)花费的时间都展示在Timeline中;

Profiles: 分析web应用或者页面的执行时间以及内存使用情况;

Audits: 分析页面加载的过程,进而提供减少页面加载时间、提升响应速度的方案;

Console: 显示各种警告与错误信息,并且提供了shell用来和文档、开发者工具交互。

总之,通过这个开发者界面,你就可以获取诸如 Xpath 、Cookie 这些对于爬虫非常重要的信息,学会使用它,对于爬虫来说必不可少。

3Python 的爬虫框架

最后,就是使用各种爬虫框架来进行爬虫,不同的爬虫框架被用于处理不同的情况。各种框架的上手难度以及自由度也各有不同。比较常用的有:

Requests 库:https://requests.kennethreitz.org/en/master/:适合新手上手的一个爬虫框架,如果你有了一定的 Python 基础,那么先用 Requests 库上手一般都是没错的。Beautiful Soup:https://beautifulsoup.readthedocs.io/:将网页变为 “Soup”,然后在Soup中提取HTML内信息的爬虫方案。同样比较容易学习,易于上手。Scrapyhttps://scrapy.org/:这是一个为了爬取网站数据,提取结构性数据而编写的应用框架。比较适合结构化数据的提取。Pyspider https://github.com/binux/pyspider:一个带有GUI的爬虫框架,可以在GUI上直接写爬虫脚本。

GUI 是什么?GUI 即 Graphical User Interface 的简称,也就是所谓的图形用户界面,是指采用图形方式显示的计算机操作用户界面。我们常用的例如QQ、微信都是含有GUI的软件,而我们的 Windows 中还有 CMD 、PowerShell 这类的软件,就是不包含 GUI 的软件,他们都通过输入命令的方式,与软件进行交互。

除此之外,还有许多不同类型的爬虫框架,大家可以根据自己的需求在网络上简单搜索,就能找到各种比较不同库的文章,届时选择自己相对能够接受的包即可。

以上三部分就是爬虫作业需要知道的三大块知识了,除此之外,你可能还需要一定的网络知识,用于处理爬虫实践中的不同种类的错误。并且,爬虫是一个可以不断深入的领域,不同类型的网站又会有不同的“反爬虫”策略,为了处理这些策略可能会需要用到更多不同的知识,对于经济学专业的学生来说,继续深入可能会有些“得不偿失”了,选取那些爬虫成本更低的网站才符合利润最大化原则。

所以简单总结,爬虫需要了解HTML的基础知识,然后要学会使用浏览器开发者模式,查看源码以及网络信息,最后就是选择一个称手的第三包来进行爬虫操作。最后是最重要的提示:爬虫本身并不违法(搜索引擎就是爬虫技术最经典的应用场景),但强行爬虫就可能涉及到侵犯隐私、窃取机密、商业侵权等违法风险。因此,一定要注意不能违反相关的法律规定,不能违法,不能违法,不能违法!重要事情说三遍~~~