• 来个爬虫吧


    从今天开始,用python做个小爬虫吧,mark。。。。先爬www.appletuan.com :)

    第一天:

    # coding=utf-8
    
    import urllib2
    import re
    
    
    def crawler():
        #当前url为写死的,后面需要改成动态的主要是要获取到/t/5449这个后缀
        usermainurl = "http://www.appletuan.com/t/5449"
        print usermainurl
        req = urllib2.Request(usermainurl)
        resp = urllib2.urlopen(req)
        resphtml = resp.read()
    
        urlpat = re.compile(r"<div class='content topic_content'><p>(.*?)</p></div>")
        #正则匹配出要取报价图片的部分,不够详细,还需要正则过滤
        #需要研究下re模块中的正则表达式的使用
        match = urlpat.findall(resphtml)
    
        for imgurl in match:
            imgurlstr = str(imgurl)
            print "imgurls:" + imgurlstr
    
    
    if __name__ == "__main__":
        print crawler()

    运行成果:

    http://www.appletuan.com/t/5449
    imgurls:<img src="http://ww2.sinaimg.cn/large/6e5af39fgw1e9nz1ppplej20hm0m844v.jpg" class="external" /></p><p>=======================晚报价分割线=============================</p><p><img src="http://ww4.sinaimg.cn/mw1024/74663877jw1e9oad9hp17j20sg0sg75k.jpg" class="external" /></p><p><img src="http://ww4.sinaimg.cn/mw1024/74663877jw1e9oadjye2wj20sg0sgtan.jpg" class="external" />
    None
    

      过滤后的结果非常粗糙,下一步想做到获取每一个img标签中的src,然后把对应的图片抓取下来。明天努力:)

    第二天:

      研究了下正则表达式,不过还是用的不是很熟练,得好好补习下。

    # coding=utf-8
    
    import urllib2
    import re
    
    
    def crawler():
        #当前url为写死的,后面需要改成动态的主要是要获取到/t/5449这个后缀
        usermainurl = "http://www.appletuan.com/t/5449"
        print usermainurl
        req = urllib2.Request(usermainurl)
        resp = urllib2.urlopen(req)
        resphtml = resp.read()
    
        urlpat = re.compile(r"<div class='content topic_content'><p>(.*?)</p></div>")
        #正则匹配出要取报价图片的部分,不够详细,还需要正则过滤
        #需要研究下re模块中的正则表达式的使用
        match = urlpat.findall(resphtml)
    
        img = re.compile(r'<img src="(.*?)" class="external" />')
    
        #re.compile(r'(^src=")+')
        for imgurl in match:
            imgstr = img.findall(str(imgurl))
            for result in imgstr:
                print("****:" + result + "
    ")
    
    
    if __name__ == "__main__":
        print crawler()

    运行结果:

      

    ****:http://ww2.sinaimg.cn/large/6e5af39fgw1e9nz1ppplej20hm0m844v.jpg
    
    ****:http://ww4.sinaimg.cn/mw1024/74663877jw1e9oad9hp17j20sg0sg75k.jpg
    
    ****:http://ww4.sinaimg.cn/mw1024/74663877jw1e9oadjye2wj20sg0sgtan.jpg
    
    None

    接下来就是研究如何把这些图片下载下来了:)

    补发完成图片下载的版本:

      

    # coding=utf-8
    
    import urllib2
    from datetime import *
    import time
    import re
    
    
    def crawler():
        #当前url为写死的,后面需要改成动态的主要是要获取到/t/5449这个后缀
        usermainurl = "http://www.appletuan.com/t/5449"
        print usermainurl
        req = urllib2.Request(usermainurl)
        resp = urllib2.urlopen(req)
        resphtml = resp.read()
    
        urlpat = re.compile(r"<div class='content topic_content'><p>(.*?)</p></div>")
        #正则匹配出要取报价图片的部分,不够详细,还需要正则过滤
        #需要研究下re模块中的正则表达式的使用
        match = urlpat.findall(resphtml)
        #匹配出图片地址
        img = re.compile(r'<img src="(.*?)" class="external" />')
    
        for imgurl in match:
            imgstr = img.findall(str(imgurl))
            for result in imgstr:
                download(result, str(datetime.now()) + '.jpg')
    
    
    def download(url, filename):
        """
        根据url下载图片
        """
        path = '/Users/****/PycharmProjects/HelloPython/appleTuan/' + filename
        socket = urllib2.urlopen(url)
        data = socket.read()
    
        with open(path, "wb") as jpg:
            jpg.write(data)
        socket.close()
    
    
    if __name__ == "__main__":
        print crawler()

    下一步计划完成,自动获取每天的信息。

  • 相关阅读:
    Bzoj 2134: [国家集训队2011]单选错位(期望)
    洛谷 P1230 智力大冲浪
    洛谷 P2695 骑士的工作
    洛谷 P1551 亲戚
    洛谷 P1111 修复公路
    洛谷 P1599 结算日
    HDU 1166 敌兵布阵
    洛谷 P2212 [USACO14MAR]浇地Watering the Fields
    洛谷 P1506 拯救oibh总部
    洛谷 P1396 营救
  • 原文地址:https://www.cnblogs.com/Lucas4J/p/3373913.html
Copyright © 2020-2023  润新知