昨晚跑完步,回家看了点小甲鱼的python视频,讲了点爬虫相关知识,于是今天兴致来了,尝试自己写写看,晚上再回去看看他是怎么实现的。
写的过程中发现对于正则表达式这块真是个坑,很多时候都我都是将一些url转换成字符串进行处理的,尚需学习。
源码如下:
import urllib.request import os import re """ python version 3.3.5 author:killvoon """ def get_page(url): req = urllib.request.Request(url, headers = { 'Connection': 'Keep-Alive', 'Accept': 'text/html, application/xhtml+xml, */*', 'Accept-Language': 'en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko' }) url=urllib.request.urlopen(req).read() return(url) #获得不同网页的关键id号 def get_page_id(url): page=get_page(url) page=page.decode('utf-8') pattern = re.compile(r'<span class="current-comment-page">.*?</span>',re.S) page_id=re.findall(pattern,page) page_id=str(page_id[0]) num=page_id.find('[') page_id=page_id[num+1:40] return page_id def save_image(pic_name,cnt): direct_path='f:/test/' image_data = get_page(pic_name) image_path=direct_path+"煎蛋网妹子图片"+str(cnt)+".jpg" f=open(image_path,'wb') f.write(image_data) print("正在保存图片") f.close() #with open(image_path,'wb') as image_file: # image_file.write(image_data) #image_file.close() #获得照片的url地址 def get_image_url(page_url,page_id): page_url=get_page(page_url).decode('utf-8') pattern = re.compile(r'<img src="(.*?)"',re.S) #pattern = re.compile(r'<img.*?src="(.*?)"',re.S) pic_name = re.findall(pattern,page_url) for i in range(len(pic_name)): print(pic_name[i]) ##print(re.match('http://ww')) ##一开始用match,发现match只能匹配开头 if re.search('http://ww',pic_name[i]): ##这一步是我发现执行程序时候,可以生成妹子的图片,同样也会将一些其他非妹子的图片爬下来,于是加了一个判断,是不是妹子图片的地址 cnt=str(page_id)+'-'+str(i) save_image(pic_name[i],cnt) else: print("你不是妹子,请走开!%s" %(pic_name[i])) def get_page_url(url,loop_num=2): page_id=get_page_id(url) page_id=int(page_id) print(type(page_id)) for i in range(1,loop_num): page_url=url+'page-'+str(page_id)+'#comments' get_image_url(page_url,page_id) page_id=page_id-i def get_mm_pic(): url="http://jandan.net/ooxx/" get_page_url(url,20) if __name__=='__main__': get_mm_pic()
咳咳。。。抓下来的图片有点污。。。请忽略。。。。