美文网首页Python爬虫作业
爬虫基础_01——正则

爬虫基础_01——正则

作者: 王小鱼鱻 | 来源:发表于2017-06-03 11:12 被阅读62次

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

    # encoding = utf-8
    import re
    import urllib
    import requests
    
    #获取图片的url
    def 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=1
    for 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正则式的基本用法

    相关文章

      网友评论

        本文标题:爬虫基础_01——正则

        本文链接:https://www.haomeiwen.com/subject/hkvpfxtx.html