python实现简单爬虫以及正则表达式简述

python中使用 re模块实现对正则表达式的使用方式

实现方式包括 2

1 re是一个引用模块,类似与其他的模块的使用,可以直接进行调取模块中的功能函数使用。

例如:

print re.split(r'\d+','one1two2three3four4')

得到的结果:

['one', 'two', 'three', 'four', '']

split语法:
split(string[, maxsplit]) | re.split(pattern, string[, maxsplit]):
按照能够匹配的子串将string分割后返回列表。maxsplit用于指定最大分割次数,不指定将全部分割。

此处使用的是第二种语法结构:re.split(pattern, string[, maxsplit])

说明:pattern 匹配的正则表达式
string 要匹配的字符串。
flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

正则表达式中r 表示的是Python 代码中的 Raw 字符串,在字符串前加个 “r” 反斜杠就不会被任何特殊方式处理,所以 r”\n” 就是包含”\” 和 “n” 的两个字符,而 “\n” 则是一个字符,表示一个换行。

如何使用第一种语法?
这就是利用re模块提供的正则表达式对象,即第2种方法

2 使用compile 函数生成一个正则表达式对象。该对象能够通过一些方法(函数)进行正则表示式处理操作。

具体流程可类似如下所示(来源于网上,当然含包括除匹配之外的类似搜索,替换等处理):

python实现简单爬虫以及正则表达式简述_第1张图片

因此对于 1 中的实例,还可以通过一下方法进行实现:


p = re.compile(r'\d+')
print p.split('one1two2three3four4')

第一行是将正则表达式编译为Pattern对象
第二行是调用对象的方法

所以,在使用python的正则表达式时,可以采取以上任意一种方法。当然,第二种方式可以重复使用,灵活性大。

说明:由于此处只介绍python正则表达式的使用思路,所以更多有关的,具体的语法,语句可以参考相关材料。

python简单爬虫实现

此处简单实现爬虫实例,主要简述思路:包括,抓取网页,数据获取。

import re
import urllib

def getHtml(url):
    page=urllib.urlopen(url)
    html=page.read()
    return html

def getImg(html):
    reg=r'src="(.+?\.jpg)"'
    imgre=re.compile(reg)
    imglist=re.findall(imgre,html)
    return imglist

html=getHtml("http://tieba.baidu.com/p/2460150866")

print(getImg(html))

此源码来源 http://www.cnblogs.com/fnng/p/3576154.html

分别使用到获取url的库urllib以及正则表达式模块。正则表达式使用的是第二种语法结构。

说明: 以上使用的是python2.7。
还有一个获取url的库urllib2,但在python3.x中两者合并为 urllib。所以导入模块改为:

import urllib
import urllib.request

上述程序中的urllib应该改为

 urllib.request

(现在有更高版本的urllib,进一步简化了程序语句)

以上程序抓取的结果是一些图片的链接。

你可能感兴趣的:(爬虫,python)