昨晚跑完步,回家看了点小甲鱼的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()
咳咳。。。抓下来的图片有点污。。。请忽略。。。。