爬虫基础_01——正则

来源:互联网 发布:大学生网络受骗原因 编辑:程序博客网 时间:2024/06/04 20:05

今天这个爬虫比较简单,爬了一下花瓣网(美女图)的一页的图片。
这里只用了正则,主要思想是:利用正则匹配要爬取的图片url,然后下载图片存到本地;
下面是具体的代码:

# encoding = utf-8import reimport urllibimport requests#获取图片的urldef getHtml(url):    page = urllib.request.urlopen(url)    html= page.read()    return html#获取网页的内容html = getHtml('http://huaban.com/boards/481662/')#正则匹配p= r'<img src="([.*\S]*)" width="\d{3}"'imgurls = re.findall(p, html.decode('utf-8'))#爬取图片x=1for imgurl in imgurls:    print('http:'+imgurl)    urllib.request.urlretrieve('http:'+imgurl, 'F:images/huaban/%s.jpg' % x)    print("downloading %d"%x)    x +=1

下面是爬到的图片:

花瓣美女图.png
因为这个页面的图片是下拉加载的,所以暂时只下载了40张,这个问题还在学习,希望有前辈指导一二;
写的比较糙,有问题麻烦爬友们指出。
这里小弟写的时候有2个小问题:
1、正则的匹配,方式很简单易懂,开始使用可能不太容易匹配成功,要反复多试几次才能熟练掌握;
2、imgurls = re.findall(p, html.decode('utf-8'))这里如果没有带.decode(‘utf-8’),
就报错TypeError: cannot use a string pattern on a bytes-like object
3、正则的一些基本用法:
1)re.search(pattern, string, flags=0)
在字符串中查找,是否能匹配正则表达式。返回_sre.SRE_Match对象,如果不能匹配返回None。
2)re.match(pattern, string, flags=0)
字符串的开头是否能匹配正则表达式。返回_sre.SRE_Match对象,如果不能匹配返回None。
3)re.split(pattern, string, maxsplit=0)
通过正则表达式将字符串分离。如果用括号将正则表达式括起来,那么匹配的字符串也会被列入到list中返回。maxsplit是分离的次数,maxsplit=1分离一次,默认为0,不限制次数。
4、其他的一些正则的用法总结:
1、正则表达式
2、Python之re模块 —— 正则表达式操作
3、Python正则式的基本用法

原创粉丝点击