zoukankan      html  css  js  c++  java
  • 来个爬虫吧

    从今天开始,用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()

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

  • 相关阅读:
    记第一场省选
    POJ 2083 Fractal 分形
    CodeForces 605A Sorting Railway Cars 思维
    FZU 1896 神奇的魔法数 dp
    FZU 1893 内存管理 模拟
    FZU 1894 志愿者选拔 单调队列
    FZU 1920 Left Mouse Button 简单搜索
    FZU 2086 餐厅点餐
    poj 2299 Ultra-QuickSort 逆序对模版题
    COMP9313 week4a MapReduce
  • 原文地址:https://www.cnblogs.com/Lucas4J/p/3373913.html
Copyright © 2011-2022 走看看