python实现ftp到ftp文件摆渡_py3000愉快的开始

import urllib.request

import os

import random

def url_open(url):

req = urllib.request.Request(url)

req.add_header('User-Agent', 'User-Agent里的内容复制进来')

proxies = ['把代理IP地址复制进来', '把代理IP地址复制进来', '把代理IP地址复制进来']

proxy = random.choice(proxies)

proxy_support = urllib.request.ProxyHandler({'http':proxy})        #        上节课讲过、、

opener = urllib.request.build_opener(proxy_support)

urllib.request.install_opener(opener)

response = urllib.request.urlopen(url)                #        去访问Ta

html = response.read()

return html

def get_page(url):

html = url_open(url).decode('utf-8')        #        |-②所以说要在这里先调用url_open,给Ta url然后把Ta得到的值再decode

# response = urllib.request.urlopen(url)                #        去访问Ta

# req = urllib.request.Request(url)

# req.add_header('User-Agent', 'User-Agent里的内容复制进来')

# html = response.read().decode('utf-8')#        |-①这里decode返回的就是解码好的,下面有个save_img,如果说把Ta解码成utf-8的形式,图片不能变成这个形式,Ta读不出来,图片是二进制代码的形式

a = html.find('current-comment-page') + 23        #        查找先用find方法,正则表达式下节课

b = html.find(']', a)        #        这里的话要给方括号一个起始位置,从a开始找到第一个方括号,返回Ta的索引坐标

html = response.read()

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:        #        找不到这个img标签的时候,这个循环会结束

b = html.find('.jpg', a, a+255)                #        图片为.jpg的形式,如果不是jpg Ta会继续往后找jpg去,所以要限定Ta一个结束范围,一个网页的的地址最多也不会超过255

if b != -1:                #        找到一个jpg,有一个索引值了

img_addrs.append(html[a+9:b+4])        #        把Ta加到这个列表里边去,把Ta地址加进去

else:

b = a + 9        #        这里如果说b找得到,那b会改变,如果说b找不到的话,b的地址也发生改变一下,如果没有这一句的话Ta会在循环在同一个位置

a = html.find('img src=', b)        #        这里是个循环,每一次a都会发生改变,a都会进行下一次寻找,a下一次寻找的起始位置就是a上一次的结束位置

return img_addrs                #        返回一个包含着图片的地址的列表

def save_imgs(folder, img_addrs):

for each in img_addrs:                #        把这些图片保存起来

filename = each.split('/')[-1]        #        最后一个反斜杠后面带的就是图片的名字

with open(filename, 'wb') as f:        #        open(filename就是在OOXX里边写入一个filename的文件,用wb的形式写入

img = url_open(each)                #        相当于把这张图片给打开,得到的是一个二进制

f.write(img)                #把Ta写进去,这个不需要返回值

def download_mm(folder='OOXX', pages=10):

os.mkdir(folder)        #        用os在当前目录创建一个文件夹

os.chdir(folder)        #        改变目录

url = "http://@&*¥……(&*@/"        #        先随便找一个有图的网站,最后别忘了加反斜杠/

page_num = int(get_page(url))        #        要用模块化的思维来写,抽象成get_page,传给Ta url,因为Ta这里要返回一个字符串,所以要把Ta变为一个整形

for i in range(pages):        #        范围前几页

page_num -= i                #这里第一次获取的是1293,第二次是1293 -= 1 ,也就是1292,以此类推

page_url = url + 'page-' + str(page_num) + '#comments'        #        整形,字符串相加,也就是拼成一个page_url

img_addrs = find_imgs(page_url)        #        打开这个链接,在这个页面,找到所有图片的地址,把Ta们保存成一个列表,然后把Ta返回,然后就是说返回了一个列表

save_imgs(folder, img_addrs)        #        利用模块化思维,把这些页面都给保存起来

if __name__ == '__main__':

download_mm()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值