从今天开始,用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()
下一步计划完成,自动获取每天的信息。