昨晚跑完步,回家看了点小甲鱼的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 = repile(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 = repile(r'<img src="(.*?)"',re.S)
    #pattern = repile(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/ooxx/"
    get_page_url(url,20)

if __name__=='__main__':

    get_mm_pic()
    


咳咳。。。抓下来的图片有点污。。。请忽略。。。。




更多推荐

python 爬取煎蛋网妹子的图片