美文网首页@IT·互联网互联网科技爬虫专题
人生中第一次爬虫...(妹子组图)

人生中第一次爬虫...(妹子组图)

作者: Theendisthebegi | 来源:发表于2017-05-23 10:31 被阅读204次

python的介绍这里不再赘述,虽说用很多语言都能写出爬虫(哪怕是oc或者swift),但python毫无疑问是当前写爬虫最为优秀的语言之一。

虽说很久之前就下载了python3,PyCharm,但真正意义的学习是昨天开始的。

而且,学习python的初衷,也是为了写一手爬虫出去装逼,所以那些基础语法也就是大概看看,抱着用到时去谷歌的心态跳过了基础学习这一相当重要的过程(先整出一手爬虫再说)。

爬虫我个人认为上手很简单,主要有三点:网络请求,文件操作,正则表达

抱着借鉴一手的心态,去网上各种找源码。然而,本来python3的源码就相对较少,而且下过来大部分运行不了,各种报错。少数运行成功也没有成功爬取数据,看来还是要靠自己啊(之所以爬不出数据,原因很多,大多和爬取页面格式改变有关)。

首先确定爬取数据的目标:某个运行失败的源码中的目标:煎蛋妹子图(这就很舒服了。。。)

引用一些模块
import urllib.request 网络请求相关
import os 文件操作相关
import re 正则表达相关
import random 单纯的获取随机数

作为初学者,没有用框架的经验,什么scrapy的I don't care。

下面是主要代码(多为拷贝后修改)

首先,先写网络请求的代码

  def url_open(url):

     req = urllib.request.Request(url)
        req.add_header('User-Agent','Mozilla/5.0 (X11; Ubuntu; Linux         x86_64; rv:36.0) Gecko/20170522 Firefox/36.0')
    response = urllib.request.urlopen(req)
    return response.read()

然后去创建文件夹

def download_mm_img (folder='default',pages=10):
    if not os.path.exists(folder):#判断是否存在该文件夹
        os.mkdir(folder) #新建文件夹
    os.chdir(folder) #跳转到文件夹
    folder_top = os.getcwd() #获取当前工作目录
    for i in range(pages):
        page_num -= i #递减下载几个网页
        page_url = url + 'page-' + str(page_num) + '#comments' #组合网页地址
        img_addrs = find_imgs(page_url) #获取图片地址
        save_imgs(img_addrs,page_num,folder) #保存图片
        os.chdir(folder_top) #修改当前目录,也就是返回上一层

获取网页最新的地址

def get_page(url):
    html = url_open(url).decode('utf-8')
    pattern = r'<span class="current-comment-page">\[(\d{2})\]</span>' # 正则表达式寻找页面地址,这里要去看网页源代码,然后根据代码确定
    result = re.findall(pattern,html)
    page = int(result[0])
    return page

获取图片地址

def find_imgs(page_url):
    pattern = r'<img src="(.*?\.jpg)"'
    html = url_open(page_url).decode('utf-8')
    img_addrs = re.findall(pattern,html)
    return img_addrs

保存每个页面的图片

 def save_imgs(img_addrs,page_num,folder):

    if not os.path.exists(str(page_num)):#判断是否存在该文件夹
        os.mkdir(str(page_num))

    os.chdir(str(page_num))
    count = 0;

    for i in img_addrs:
         count += 1
          if not i.startswith('http:'):
             i = 'http:' + i

    filename = str(count) + 'wylog' + str(int(random.random()*1000)) + 'wylog' +  i.split('/')[-1]
    print('wylog',filename,i)
    image = url_open(i)
    with open(filename,'wb') as f:
        f.write(image)
        f.close()

下载过来的图片:


mm.png

源码地址:https://github.com/wangyongy/first-python

相关文章

  • 人生中第一次爬虫...(妹子组图)

    python的介绍这里不再赘述,虽说用很多语言都能写出爬虫(哪怕是oc或者swift),但python毫无疑问是当...

  • python爬虫 爬取妹子图片

    不爬妹子图的爬虫不是一只好爬虫。 ----鲁迅主页网址[妹子图...

  • python爬虫 爬取妹子图

    不爬妹子图的爬虫不是一只好爬虫。 ----鲁迅 主页网址唯一图...

  • 爬虫妹子图

    爬虫第二天 其实一直想爬个妹子图,因为网上的教程不计其数,好像都是拿这个作为案例教材来入门的。毕竟实战出真知。昨天...

  • 一、多端展示(uniapp)以及内容发布系统(wordpress

    概述 学习爬虫时发现很多人都用妹子图练手,使用scrapy或者selenium将妹子图的所有图片都爬出来,妹子图是...

  • Java爬虫 爬妹子图

    这是一个简单的java爬虫代码 用来爬妹子图的 在本次的爬虫实践中要用的 jar 依赖包如下: commons-i...

  • Nodejs爬虫(妹子图)

    前言 最近在学习Nodejs,想做个小项目练练手,查了一下资料,发现用nodejs做爬虫好像不错,于是参考了这个例...

  • 煎蛋妹子图爬虫

    为了不增加网站的负担,这里只做一个demo,输出一页的图片地址 代码: 煎蛋的网页源代码找不到图片地址,所以我们换...

  • 【注意】妹子图python爬虫

    下方有太过...不含蓄的画面 快闪开 同时 本人刚简书刚开通两天,来的大哥大姐们(小姐姐诶)觉得不错~可以点个关注...

  • [python 爬虫03] 妹子图

    代码 后记 爬虫感觉就像是反编译,从现有的网页里面找出蛛丝马迹,需要仔细和抖机灵。

网友评论

    本文标题:人生中第一次爬虫...(妹子组图)

    本文链接:https://www.haomeiwen.com/subject/jvswxxtx.html