APP下载

正则表达式在python爬虫中的应用

2019-11-12苻玲美

电脑知识与技术 2019年25期
关键词:爬虫数据

苻玲美

摘要:数据是新一轮技术革命最重要的生产资料,爬虫是获取数据最直接的方式,但爬出来的数据代码夹杂文字,面对大量杂乱的代码夹杂信息,通过正则表达式检索匹配出有用的信息,过滤无用的数据。本文介绍正则表达式在python爬虫中的应用,总结python爬虫中正则表达式的应用技巧。

关键词:爬虫;python;正则表达式;数据

中图分类号:TP311    文献标识码:A

文章编号:1009-3044(2019)25-0253-02

网络爬虫是一个非常注重实践性而且实用性很强的编程技能,写爬虫分析股票走势,上链家爬房源分析房价趋势,爬知乎、爬豆瓣、爬新浪微博、爬影评,等等。人工智能时代,对数据的依赖越来越重要,数据主要的来源就是通过爬虫获取,通过爬取获取数据可以进行市场调研和数据分析。但爬虫时收集回来的一般是字符流,我们需要从中筛选有用的信息,而用正则表达式可以轻松地完成这一任务。

1正则表达式与爬虫

爬虫四个主要步骤:

· 明确目标 (要知道你准备在哪个范围或者网站去搜索)

· 爬 (将所有的网站的内容全部爬下来)

· 取 (获取有用信息、去掉没用的数据)

· 处理数据(按照我们想要的方式存储和使用)

那么在取(文本过滤这块)最强大的就是正则表达式,更是python爬虫世界必不可少利器。

什么是正则表达式,python爬虫使用正则表达式的方法。

正则表达式(Regular Expression,简称Regex或RE)又称为正规表示法或常规表示法,常常用来检索、替换那些符合某个模式的文本,它首先设定好了一些特殊的字及字符组合,通过组合的“规则字符串”来对表达式进行过滤,从而获取或匹配我们想要的特定内容。它具有灵活、逻辑性和功能性非常的强,能迅速地通过表达式从字符串中找到所需信息的优点。

正则表达式的常见语法格式:

在 Python 中,我们可以使用内置的 re 模块来使用正则表达式。re模块提供了3个方法对输入的字符串进行确切的不同要求查询。每一个方法都接收一个正则表达式和一个待查找匹配的字符串。

(1)match()方法- 从头匹配:

match()方法的工作方式是只有当被搜索字符串的开头匹配模式的时候它才能查找到匹配对象。

(2)使用re.search查找 – 匹配任意位置:

search()方法和match()类似,不过search()方法不会限制我们只从字符串的开头查找匹配。search()方法会在它查找到一个匹配项之后停止继续查找。

(3)使用 re.findall – 所有匹配对象:

在Python中我使用的最多的查找方法是findall()方法。当我们调用findall()方法,我们可以非常简单地得到一个所有匹配模式的列表,

2 正则表达式抓取网络数据常见方法

在 HTML 中, 基本上所有的实体内容, 都会有个成对的 tag 来框住它。 而这个被 tag 住的内容, 就可以被展示成不同的形式。header 和 body。 在 header 中, 存放这一些网页的网页的元信息, 比如说 title, 这些信息是不会被显示到你看到的网页中的. 这些信息大多数时候是给浏览器看, 或者是给搜索引擎的爬虫看。HTML 的第二大块是 body, 这个部分才是你看到的网页信息。网页中的视频, 图片和文字等都存放在这里。

tag 就是主标题, 我们看到呈现出来的效果就是大一号的字。 里面的文字就是一个段落。 里面都是一些链接。
是层用来存放一块信息。在html还有很多这样的tag,信息都是放在这些 tag 中的。爬虫想要做的就是根据这些 tag 来找到合适的信息。

1)爬取网页

通过下列操作成功爬取了百度的首页。

2) 抓取title标签间的内容

Print data打印出来抓取的网页,这就证明了我们能够成功读取这个网页的所有信息了。但我们还没有对网页的信息进行汇总和利用。我们发现想要提取一些形式的信息,合理的利用 tag 的名字十分重要。我们想用代码找到这个网页的 title,选好要使用的 tag 名称 。 使用正则匹配。</p><p>title=re.findall(r"<title>(.+?)", data)

print(title[0])

3)抓取

标签间的内容

想要找到中间的那个段落

的内容跟一样,但因为这个段落在 HTML 中还夹杂着 tab, new line, 所以我们给一个flags=re.DOTALL 来对这些 tab, new line 不敏感。</p><p>4)爬取所有的连接的网址。</p><p>有些时候,我们需要获取网站中所有的超链接并保存在文档里进行应用。一个一个获取是不现实的,我们把网页爬取出来后,用正则表达式去在索出来。超链接在网页中的格式是:<a rel="nofollow" class="item " href="http://account.dianping.com/login" data-click-name="login">你好,请登录</a>。网址以href=“开头,以”结束。因此正则表达p=re.findall(rhref=”(.*?)”),data),其中data存放抓取的网页信息,r进行转义。</p><p>3 总结</p><p>大数据时代,我们需要海量的信息去分析市场、分析客户。而爬虫获取的数据掺杂着大量的代码和没用的数据。通过 正则表达式筛选有用的信息,过滤无用的数据。本文介绍爬虫与正则表达式的关系,正则表达式的语法,re模块的几种应用正则表达式方法的区别。最后通过案例总结了python爬虫中正则表达式的使用技巧。</p><p>参考文献:</p><p>[1]熊畅.基于Python爬虫技术的网页数据抓取与分析研究[J]. 数字技术与应用,2017(9):45-46.</p><p>[2]魏冬梅,何忠秀,唐建梅.基于Python的Web信息获取方法研究[J].软件导刊,2018, 17(1):41-43.</p><p>[3]万磊,严道波,杨勇,等.基于文本挖掘的95598投訴工单关键信息提取分析[J].电力与能源,2019,40(01):76-78.</p><p>[4]Jeffrey E.F.Friedl(著).精通正则表达式[M].余晟,译.北京:电子工业出版社,2008.</p><p>【通联编辑:闻翔军】</p></div></div> <!-- <div class="m_article_pdf"><a href="https://cimg.fx361.com/kkb.apk">查看pdf文档请下载app</a></div>--><div class="article_love_part"> <h3>猜你喜欢</h3> <div class="article_love_keyword"><span><a href="/tags/f/d/223cceafd35557ba/1.html" target="_blank">爬虫</a></span><span><a href="/tags/0/8/16aa273f2941c9b5/1.html" target="_blank">数据</a></span></div> <div class="article_love_news"><dd><a href="/news/2022/1018/10790022.html" target="_blank" title="利用网络爬虫技术验证房地产灰犀牛之说">利用网络爬虫技术验证房地产灰犀牛之说</a></dd><dd><a href="/news/2021/0507/10295924.html" target="_blank" title="基于Python的网络爬虫和反爬虫技术研究">基于Python的网络爬虫和反爬虫技术研究</a></dd><dd><a href="/news/2018/0418/21581134.html" target="_blank" title="利用爬虫技术的Geo-Gnutel la VANET流量采集">利用爬虫技术的Geo-Gnutel la VANET流量采集</a></dd><dd><a href="/news/2017/0417/13903553.html" target="_blank" title="大数据环境下基于python的网络爬虫技术">大数据环境下基于python的网络爬虫技术</a></dd><dd><a href="/news/2016/1014/290550.html" target="_blank" title="浅谈计量自动化系统实现预购电管理应用">浅谈计量自动化系统实现预购电管理应用</a></dd></div> </div><div class="phbk_part"><h3>杂志排行</h3> <ul><li><a href="/bk/hzjjykj/202413.html" class="title">《合作经济与科技》</a><a href="/bk/hzjjykj/202413.html" class="date">2024年13期</a></li><li><a href="/bk/hyyjk/202410.html" class="title">《婚育与健康》</a><a href="/bk/hyyjk/202410.html" class="date">2024年10期</a></li><li><a href="/bk/swyzhsby/20247.html" class="title">《思维与智慧·上半月》</a><a href="/bk/swyzhsby/20247.html" class="date">2024年7期</a></li><li><a href="/bk/tckjyjs/202311.html" class="title">《陶瓷科学与艺术》</a><a href="/bk/tckjyjs/202311.html" class="date">2023年11期</a></li><li><a href="/bk/zgsr/20247.html" class="title">《中国商人》</a><a href="/bk/zgsr/20247.html" class="date">2024年7期</a></li><li><a href="/bk/jsbl/20244.html" class="title">《教师博览》</a><a href="/bk/jsbl/20244.html" class="date">2024年4期</a></li><li><a href="/bk/sdjy/20246.html" class="title">《师道·教研》</a><a href="/bk/sdjy/20246.html" class="date">2024年6期</a></li><li><a href="/bk/zgdwmy/20246.html" class="title">《中国对外贸易》</a><a href="/bk/zgdwmy/20246.html" class="date">2024年6期</a></li><li><a href="/bk/bl/20246.html" class="title">《伴侣》</a><a href="/bk/bl/20246.html" class="date">2024年6期</a></li><li><a href="/bk/jjjsxzxx/20246.html" class="title">《经济技术协作信息》</a><a href="/bk/jjjsxzxx/20246.html" class="date">2024年6期</a></li></ul> </div><div class="bk_part"> <div class="bk_im_b"><a href="/bk/dnzsyjs/201925.html"><img src="https://img.fx361.cc/images/2019/11/13/comqkimagesdnjldnjl201925-l_mini.webp" alt=""></a></div> <div class="dbk_title"><a href="/bk/dnzsyjs/" target="_blank">电脑知识与技术</a></div> <div class="dbk_date"><a href="/bk/dnzsyjs/201925.html" target="_blank">2019年25期</a></div> </div><div class="others"> <h3><a href="/bk/dnzsyjs/" target="_blank">电脑知识与技术</a>的其它文章</h3> <ul><li><a href="/news/2019/1112/6002032.html" title="项目进度管理在医院信息化建设中的应用实践">项目进度管理在医院信息化建设中的应用实践</a></li><li><a href="/news/2019/1112/6002058.html" title="音乐学院教育档案信息化管理研究">音乐学院教育档案信息化管理研究</a></li><li><a href="/news/2019/1112/6002083.html" title="实现快速实时处理的一种新数据库Kudu">实现快速实时处理的一种新数据库Kudu</a></li><li><a href="/news/2019/1112/6002115.html" title="云环境下融合P2P技术的群组视频分发机制的研究">云环境下融合P2P技术的群组视频分发机制的研究</a></li><li><a href="/news/2019/1112/6002130.html" title="大数据技术解析及其安全建设研究">大数据技术解析及其安全建设研究</a></li><li><a href="/news/2019/1112/6002170.html" title="改善传统WEB应用程序通信模式的两种方法研究">改善传统WEB应用程序通信模式的两种方法研究</a></li></ul></div></div> <div class="m_footer"></div> <script> if ('serviceWorker' in navigator) { window.onload = function () { navigator.serviceWorker.register('/sw.js'); }; } </script> <script type="text/javascript" src="https://s1.pstatp.com/cdn/expire-1-M/jquery/3.4.0/jquery.min.js"></script> <script type="text/javascript" src="https://s2.pstatp.com/cdn/expire-1-M/Swiper/4.5.0/js/swiper.min.js"></script> <script type="text/javascript" src="https://s1.pstatp.com/cdn/expire-1-M/jquery.lazyload/1.9.1/jquery.lazyload.js"></script> <script type="text/javascript"> document.write('<script src="https://img.fx361.cc/js/m.index_cc.js"><\/script>'); </script> </section> </body> </html>