PYTHON笔记简单的网页爬虫:用正则表达式抓取关键信息
Posted 蓝鲸OLS实验室
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PYTHON笔记简单的网页爬虫:用正则表达式抓取关键信息相关的知识,希望对你有一定的参考价值。
笔记目标
利用正则表达式和requests命令抓取南京大学商学院师资力量中各老师的信息,网址为:http://nubs.nju.edu.cn/faculty.php
正则表达式(Regular Expression,代码中简写re),正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。Python中的re 模块使 Python 语言拥有全部的正则表达式功能。
requests是python的一个HTTP客户端库,跟urllib,urllib2类似,那为什么要用requests而不用urllib系列呢?答曰:因为短啊!一般只需要三行就可以获取网页代码了。安装requests包,可以用pip install requests,至于pip包的安装请参看。
第一行为声明可以编译中文,如果不声明,当出现需要输出中文时python就会报错,如下图,想输出个‘爱你’都不行。
第二行为调用requests,第三行为调用正则表达式,因为暂时没用到所以它是灰色的。
第四行为将从网址”http://nubs.nju.edu.cn/faculty.php“获取代码并让其贴上一个标签名为res,注意这里的‘=’不是赋值的意思。
第五行为打印出刚刚保存的res的代码,并声明为text格式,运行以后你就可以得到刚刚那个网址所有的源代码。这几行命令可以适用于抓取一个没设置反爬虫或者没有登录名的网页。
获得源代码以后,就可以去找想要的信息所对应的规律,然后通过这个规律抓出信息。正则表达确实万能通用,但是要说方便的话,beautiful soup可能会更好一点,beautiful soup可以通过标签信息来抓取你想要的,不需要用肉眼去慢慢找规律了。附一个beautiful soup的官方说明:
http://beautifulsoup.readthedocs.io/zh_CN/latest/。
下面我们用正则表达来获取老师们的姓名。根据在源代码中的规律,可以发现在每个老师姓名前后都是这样的:<p > 姓名</p>,所以这就是一个规律,可以细心发现第一个<p >是多一个空格的,所以虽然源代码中也有别的文本信息是在<p>xx</p>中,也可以区分。可是如果以后碰到完全一样的规律咋么办?那就要先抓大后抓小,先把所在的大区域定下来再抓就可以了。
抓取了老师的姓名以后,我们来抓一下老师们的照片吧,下图为完整代码~
蓝鲸OLS实验室创始人之一程令国老师的论文The health implications of social pensions: Evidence from China's new rural pension scheme,在国际权威期刊 Journal of Comparative Economics上在线发表。图为2016年4月程老师在东南大学公共卫生学院汇报该论文。
本期小编:Nympho
以上是关于PYTHON笔记简单的网页爬虫:用正则表达式抓取关键信息的主要内容,如果未能解决你的问题,请参考以下文章
python网络爬虫抓取动态网页并将数据存入数据库MySQL