《零基础入门学习Python》学习过程笔记【56下载一个网站指定页数的XXOO图】

1如何创建目录?  os.mkdir("目录名")


2.urllib.request.Request("网页链接")

urllib.request.Request对象 这种写法更容易为网站视为用户访问


如何得到Request对象?将string类型的网站强制类型转换,即Request("网站地址")


3.网站如何检查访问对象是否为用户?检查User-Agent


4如何查看一个网站的User-Agent?

右键网页,点击检查,再看Nework 这时在看下方..看是否有正在运行的东西,如果没有那点点网页,让网页发生变化。这时有在运行的东西了,点这个东西,就会出现User-Agent了


5.stra.find(strb,【开始索引】,【结束索引】)在stra中查找strb,返回索引


6.图片是二进制代码的形式

网页代码是utf-8的形式


7.stra.split(分隔符)   过指定分隔符对字符串进行切片返回分割后的字符串列表


8.list1[-1]得到列表的最后一个元素


9.if __name__=='__main__':的作用?

用if __name__ == '__main__'来判断是否是在直接运行该.py文件



源代码如下

import urllib.request
import os

def url_open(url):
    req=urllib.request.Request(url)#生成一个Request对象,为什么生成这个对象?
    #因为要给它添加一个文件头让它看上去更像用户访问
    req.add_header('User-Agent','Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Mobile Safari/537.36')
    response=urllib.request.urlopen(url)
    html=response.read()  #html的类型是字符串
    return html

def get_page(url):
    html=url_open(url).decode("utf-8")

    a=html.find('current-comment-page')+23
    b=html.find(']',a)

    return html[a:b]  #返回字符串
    

def find_imgs(url):  #找到链接中的图片
    html=url_open(url).decode('utf-8')
    img_addrs=[] #保存所有图片的地址

    a=html.find("img src=") #找不到返回-1

    while a!=-1 :
        b=html.find(".jpg",a,a+255) #一个链接最长长不过255
        if b!=-1 :
            img_addrs.append("http:"+html[a+9:b+4])
        else:
            b=a+9

        a=html.find('img src=',b)

    return img_addrs

    

def save_imgs(folder,img_addrs):
    for each in img_addrs:
        filename=each.split('/')[-1]
        with open(filename,'wb') as f:
            img=url_open(each)
            f.write(img)
        
    
    
def download(folder='ooxx',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=page_num-i
        page_url=url+"/page-"+str(page_num)+"#comments"
        img_addrs=find_imgs(page_url) #该列表保存该页码找到的所有图片
        save_imgs(folder,img_addrs)

if __name__=='__main__':
    download()


你可能感兴趣的:(小项目)