python_work5

1.目录搜索及文件转移

import os
#导入系统库
import shuli
#实现移动文件的功能需要

#path代表待搜索的目录路径,result存储搜索到的的文件路径列表
#函数将path目录中的全部子目录和文件找到保存至result

def search_dir(path,result):
    
    #使用os中的listdir得到path下的目录和文件,保存到child_files
    child_files = os.listdir(path)

    for child in child_files:
        # 遍历child_files
        child = os.path.join(path,child)
        #通过join函数拼接子目录或文件的路径,存储至child

        result.append(child)
        #将child保存至result
        if os.path.isdir(child)
        #如果child是一个子目录
            search_dir(child,result)
            #调用search_dir继续递归搜索child

            input_dir = input("输入待搜索的目录:")
            output_dir = input("输入保存文件的目录:")
            #输入搜索目录和doc文件保存的目录

            files = list()
            #设置保存子目录和文件路径的列表

            search_dir(input_dir,files)
            #将input_dir中的全部子目录和文件路径找到并保存到files

            for file in files:
                print("find %s"%(file))
                #打印搜索到的路径

                if os.path.isfile(file) and file.endswith('.docx'):
                    #如果该文件是一个docx文件
                    print("move %s"%(file))
                    #打印提示信息
                    shutil.move(file,output_dir)
                    #将文件移动到output_dir

2.抓取豆瓣电影信息

#下载豆瓣电影的第一页

import urllib.request
#导入url-lib-request模块

url = "https://movies.douban.com/top250"
#设置网址

#http头信息
header = {
    "User-Agent":"Moailla/5.0(Windows NT 10.0;WOW64)"
    "AppleWebKit/537.36(KHTML,like Gecko)"
    "Chrome/76.0.3809.87 Safari/537.36 SLBroeser/6.0.1.8131"
}

req = urllib.request.Request(url = url,headers = header)
#构造一个Request请求对象

response = urllib.request.urlopen(req)
#用urlopen函数,向豆瓣服务器发送请求,获取到回复response

html = response.read().decode("utf-8")
#读取回复并使用UTF-8编码进行解码

print(html)
import urllib.request
#导入url-lib-request模块

def download_html(url):
    #http头信息
    header = {
        "User-Agent":"Moailla/5.0(Windows NT 10.0;WOW64)"
        "AppleWebKit/537.36(KHTML,like Gecko)"
        "Chrome/76.0.3809.87 Safari/537.36 SLBroeser/6.0.1.8131"
    }

req = urllib.request.Request(url = url,headers = header)
#构造一个Request请求对象

response = urllib.request.urlopen(req)
#用urlopen函数,向豆瓣服务器发送请求,获取到回复response

html = response.read().decode("utf-8")
#读取回复并使用UTF-8编码进行解码

return html
#电影介绍页网址提取的功能封装至函数extract_url中
#函数输入html,返回http中提取的url链接
def extract_url(html):

html = download_html("https://movies.douban.com/top250")
#调用函数download_html,下载豆瓣top250第一页,保存至html

import re
#导入re正则库

pattern = 'https://movies.douban.com/subject/[0-9]+/'
#电影介绍网页的正则表达式

urls = re.findall(pattern,html)
#从html中提取全部满足电影介绍页网址pattern的url

urls = set(urls)
#通过set集合去重

#打印出提取的网址数量和具体的网址
print("urls count = %d"%(len(urls)))
for url in urls:
    print(url)

整合:

import urllib.request
#导入url-lib-request模块

def download_html(url):
    #http头信息
    header = {
        "User-Agent":"Moailla/5.0(Windows NT 10.0;WOW64)"
        "AppleWebKit/537.36(KHTML,like Gecko)"
        "Chrome/76.0.3809.87 Safari/537.36 SLBroeser/6.0.1.8131"
    }

req = urllib.request.Request(url = url,headers = header)
#构造一个Request请求对象

response = urllib.request.urlopen(req)
#用urlopen函数,向豆瓣服务器发送请求,获取到回复response

html = response.read().decode("utf-8")
#读取回复并使用UTF-8编码进行解码

return html
#电影介绍页网址提取的功能封装至函数extract_url中
#函数输入html,返回http中提取的url链接
def extract_url(html):

pattern = 'https://movies.douban.com/subject/[0-9]+/'
#电影介绍网页的正则表达式

urls = re.findall(pattern,html)
#从html中提取全部满足电影介绍页网址pattern的url

return set(urls)

file = open('douban.txt','r')
#以读取方式打开豆瓣电影列表文件

output = open('movie.txt','w')
#以写模式打开movie.txt,用来存储提取出的电影介绍页网址

lines =file.readlines()
#将douban中的网址按行读入

for url in lines:
    #遍历每一行url,通过strip函数去掉收尾空字符
    url = url.strip()
    print(url)
    #打印url作为调试信息
    html = download_html(url)
    #调用download_html获取url对应的html代码
    urls = extract_url(html)
    #调用extract_url提取html中的电影介绍页链接网址

    for url in urls:
    #遍历url集合
        output.write(url + '\n')
        #将每个url文件都写入movie文件

    file.close()
    output.close()
    #关闭douban和movie两个文件

你可能感兴趣的:(python)