您的位置:首页 > 编程语言 > Python开发

正则学习:简单的Python小爬虫

2015-11-24 12:06 295 查看

0×00 背景

在网上找了一点关于Python的内容,一直以来没怎么学习Python的正则以及Urllib模块,通过学习写了一个最简单的Python小爬虫(用来批量下载某网页上的所有图片),不为实用,只为学习一点Python的内容,以重燃自己的学习欲望。

0×01 正则表达式

正则表达式凡是接触编程的人,应该都了解正则的高端之处吧,我这里不做赘述,因为我也不是特别懂,只是列举一些简单常用的而已。

正则表达式由两种字符组成,一种是基本字符,一种是元字符,元字符如下面:

.       匹配除 \n 以外的任何字符(注意元字符是小数点)
*       匹配0个或者以上的任意字符
\       转义字符
[abcde] 匹配 abcde 之中的任意一个字符
[a-h]   匹配 a 到 h 之间的任意一个字符
\w      匹配大小写英文字符及数字 0 到 9 之间的任意一个及下划线,相当[a-zA-Z0-9_]
\d      匹配任何 0 到 9 之间的单个数字,相当于 [0-9]


常用的大概也就这几个,大家有什么需求可以直接百度,详细的介绍很多。

0×02 Python中的正则函数

Python中提供了不少关于正则的方法,这些方法都处于re模块中,使用前先引用re模块,其中最常用的方法有这么几个,列个表给大家:

方法/属性作用
match()决定RE是否在字符串刚开始的位置匹配
search()扫描字符串,找到这个RE匹配的位置
findall()找到RE匹配的所有子串,并把他们作为一个列表返回
finditer()找到RE匹配的所有子串,并把他们作为一个迭代器返回
compile()对定义好的正则进行编译

0×03 urllib模块

Urllib模块是python中的网络模块,该模块是用来对指定url进行一些操作,具体可以自行百度,这里同样列举几个本例子需要用到的方法。

方法/属性作用
urlopen()获取指定url的内容
read()读取指定url的内容
urlretrieve()将远程数据下载到本地

0×04 示例代码

这个示例代码是用来批量下载某页面上的所有图片,废话不说,直接上代码:

import re
import urllib

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

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

def dowImg(imglist):
x = 1
for imgurl in imglist:
urllib.urlretrieve(imgurl, '%s.jpg' % x)
x+=1
url = "http://tieba.baidu.com/p/2579724416"
html = getHtml(url)
imglist = getImg(html)
dowImg(imglist)


http://www.2liang.me/archives/27#more-27
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: