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两个文件