Python学习笔记(五十)爬虫的自我修养(三)爬取漂亮妹纸图

import random
import urllib
from urllib import request
import os

#########################################################
# 参数设置
wsp = ‘DouziOOXX‘

# 打开连接
def url_open(url):
    req = urllib.request.Request(url)
    req.add_header(‘User-Agent‘,
                   ‘Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36‘)
    response = urllib.request.urlopen(req)
    html = response.read()

    # print(url)
    return html

def get_page(url):
    # 打开链接
    html = url_open(url).decode(‘utf-8‘)
    # 查找 current-comment-page
    a = html.find(‘current-comment-page‘) + 23
    b = html.find(‘]‘, a)   # 从a开始,找到第一个 ], 返回索引
    return html[a:b]

def find_imgs(url):
    html = url_open(url).decode(‘utf-8‘)
    img_addrs = []

    a = html.find(‘img src=‘)
    while a != -1:
        b = html.find(‘.jpg‘, a, a + 255)
        if b != -1:   # 找到一个 jpg
            img_addrs.append(html[a+9 : b+4])  # 加入列表
        else:         # 到不到, 移动b的位置
            b = a + 9
        a = html.find(‘img src=‘, b)  # 在b之后开始,再找img src

    # for each in img_addrs:
    #     print(each)
    return img_addrs

def save_imgs(folder, img_addrs):
    for each in img_addrs:
        filename = each.split(‘/‘)[-1]
        # print(‘http:‘ + each)
        with open(filename, ‘wb‘) as f:
            img = url_open(‘http:‘ + each)
            f.write(img)

def download_mm(folder = wsp, pages = 10):
    os.mkdir(folder)
    # 切换到工作目录
    os.chdir(folder)

    url = "http://jandan.net/ooxx/"
    # 获得页面的地址
    page_num = int(get_page(url))
    for i in range(pages):
        page_num -= i
        # 打开这个地址
        page_url = url + "page-" + str(page_num)
        # 获取图片地址, 保存为一个列表
        img_addrs = find_imgs(page_url)
        # 保存到图片到指定文件夹
        save_imgs(folder, img_addrs)

if __name__==‘__main__‘:
    download_mm()

(果然爬妹纸图是学习爬虫的动力嘛~~)

时间: 2024-07-31 21:42:07

Python学习笔记(五十)爬虫的自我修养(三)爬取漂亮妹纸图的相关文章

python学习笔记-(十五)RabbitMQ队列

rabbitMQ是消息队列:想想之前的我们学过队列queue:threading queue(线程queue,多个线程之间进行数据交互).进程queue(父进程与子进程进行交互或者同属于同一父进程下的多个子进程进行交互):如果两个独立的程序,那么之间是不能通过queue进行交互的,这时候我们就需要一个中间代理即rabbitMQ 消息队列: RabbitMQ ZeroMQ ActiveMQ ........... 一. 安装 1. ubuntu下安装rabbitMQ: 1.1 安装: sudo a

Python学习笔记(十五)用Python获取本地数据

f1 = open(r'E:\Python\Data\data1.txt') #读取data1.txt文件,使用系统默认缓冲区大小, 为了读取快点,使用缓存吧! f = open(r'E:\Python\Data\data2.txt', 'w') f.write('Hello World !') f.close() f = open(r'E:\Python\Data\data2.txt', 'r') p1 = f.read(5) # 先读5个字节 p2 = f.read() # 余下的都读出来f

Python学习笔记(十五)

一.进程与线程 一个操作系统可以有多个进程 一个进程可以有多个线程,且必须有一个线程 二.多进程 from multiprocessing import Process import os # 多进行要运行的函数 def run_proc(name): print("Hello,",name,os.getpid()) if __name__ == "__main__": print("Parent process %s " % os.getpid

Python学习笔记(十八)

一.datetime简介 datetime是Python处理日期和时间的标准库 二.导入datetime日期时间处理标准库 # datetime是日期时间模块,其中包括一个同名的日期时间类 from datetime import datetime 三.获取当前的年月日日期时间信息 # 获取当前日期时间信息 now = datetime.now() 四.指定日期时间 dt = datetime(2015,3,4,12,12,23) 五.将日期时间转换为Unix时间缀 # 将日期时间对象转换为Un

Python学习笔记(十)

一.类和构造函数的定义 class 类名(object): def __init__(self,name,score): self.name = name self.score = score def show_info(self): print("name=",name,"score=",score) 类名通常大写 二.通过变量生成实例 student1 = Student("cq",100) 三.自由的为对象实例添加属性 student1 =

python学习笔记(五):装饰器、生成器、内置函数、json

这周学习了装饰器和生成器,写下博客,记录一下装饰器和生成器相关的内容. 一.装饰器 装饰器,这个器就是函数的意思,连起来,就是装饰函数,装饰器本身也是一个函数,它的作用是用来给其他函数添加新功能,比如说,我以前写了很多代码,系统已经上线了,但是性能比较不好,现在想把程序里面每个函数都加一个功能,用来统计每个函数的运行时间是多少,找出来运行比较慢的函数,来优化代码,就需要添加一个新的功能,来统计程序的运行时间,那这样的话,就得修改每个函数了,需要改代码,但是代码特别多,改完了公司倒闭了,这时候装饰

Python学习笔记(十九)

一.collections介绍 collections是Python中内建的一个集合模块,提供了许多有用的集合类 二.namedtuple namedtuple是一个函数,用来创建一个类似类的自定义的tuple对象,并且可以设定名称以及元素的个数以及元素的属性,并且可以通过直接引用元素的属性来访问元素. Point = namedtuple("Point",[x,y]) p = Point(1,2) print(p.x,p.y) 三.deque deque 是为了实现高效插入和删除操作

Python学习笔记(十二)

一.报错处理 Python中可以通过: try: 相关语句块 except 错误类型 as e: print("except:",e) finally: print("finally") 来进行错误的侦测和处理 二.Python中错误的继承 Python中的错误也是class Python中所有的错误类型都继承自BaseException 如果Python中的错误没有被捕获,则其会一层一层的向上抛出,直至被编译器所捕获 三.记录错误 Python中可以通过loggi

Python学习笔记五(模块与包)

一.模块 1.模块介绍 一个模块就是包含了一组功能的python文件,可以通过import导入模块使用. python中模块分为四个类别: a) 使用python编写的.py文件 b) 已被编译为共享库或DLL的C或C++扩展 c) 把一系列模块组织到一起的文件夹,文件夹内有__init__.py文件,称该文件夹为包 d) 使用C编写并链接到python解释器的内置模块 定义my_module.py模块,模块名为my_module print("from my_module.py")