来个爬虫吧

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

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

原文地址:https://www.cnblogs.com/Lucas4J/p/3373913.html