本文章属于爬虫入门到精通系统教程第五讲html
在爬虫入门到精通第四讲中,咱们了解了如何下载网页,这一节就是如何从下载的网页中获取咱们想要的内容python
html = u""" <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>文章的标题</title> </head> <body> <div id="app" class="container"> <h1>h1文字</h1> <label for="input">Input</label> <textarea id="input" rows="10" class="form-control"> </body> </html> """
咱们要获取的html 如上所示,git
假如咱们要获取文章的标题这几个文字,那么咱们应该怎么作呢?github
咱们只要能定位到它,也就能获取到它正则表达式
那么,如何定位到它呢?express
很简单,根据它两边的内容.segmentfault
咱们很简单的能发现 它 左边是<title> ,右边是</title>app
因此,咱们如何找到文章的标题这几个文字呢,只要左边是<title>
,右边是</title>
,那么中间就是咱们要找的spa
下面用程序写出来.net
能够看到咱们正确匹配到了文章的标题,
咱们首先来看 pattern = '<title>(.*?)</title>'
咱们能够发现这就是咱们上面讲的,左边是<title>
,右边是</title>
,那么中间的(.*?)
是什么呢?这实际上是来用来声明咱们要匹配的字符串是什么,这边咱们用的是(.*?)
,表示咱们要匹配的字符串能够是任何东西,没有格式要求。也就是俗称"万能匹配",你们能够下图的正则表达式语法,来解释下为何 .*?
是万能匹配, .*?
外面的 ()
又是什么鬼
string=html
表示咱们当前要被匹配的是咱们定义的html
最后flags=re.S
表示(.*?)
中的 .
能够匹配包括换行符(见下面表)
[0]
是取返回列表中的第一个,主要是方便演示
图片来自 博客园
代码以下
本文使用notebook编写完成,全文在github上
看完本篇文章后,你应该要:
学会最通用的一种正则表达式
re.findall('左右的字符串(.*?)右边的字符串',等待匹配的字符串,flags)
你们想深刻了解正则表达式的话
请 先看这一篇 正则表达式30分钟入门教程
再看这一篇 Regular expression operations
最后的最后,收藏的大哥们,能帮忙点个赞么~