Anaconda是Python的一个免费增值(freemium)发布,用于处理大规模数据处理、预测式分析和科学计算,目标是简化包的管理和部署。它的包管理系统是conda。Anaconda包含了超过330个Python开源包。所以使用Anaconda平台进行python编程只需专注于内容而不用担心python支持包的问题。
前几天六维开放注册,就有新人问怎样才能快速涨分,我的经验是:在热门资源的早期就开始做种。按照这个思路就有两个问题出现:
1、怎么识别热门资源
2、如何在其早期就开始做种
怎么识别热门资源呢?我对电影区比较熟悉,就拿电影区举例。电影区的热门资源有两条规律:
(1)院线上映大片的前几部或者导演演员的前续作品都很有可能是热门资源。比如王牌特工2上映前,王牌特工1肯定是热门资源。
(2)院线大片有资源后只要在电影区出现肯定是热门资源。
当然电视剧集区里,微博微信的热门话题剧集就是热门资源了。
如何在热门资源早期就开始做种?由于六维下线了RSS功能,所以如果没有其他提醒方式帮助,只能频繁的手动查看资源区,这样很浪费时间的。
这种重复性的工作就交给脚本吧!
思路:六维新发布的资源都会显示在相应资源区的第一页,并且这一页的网址不会变。因此用脚本监测这一页的内容,如果出现想要的资源马上提醒。
方案:使用python制作脚本,使用urllib包登录六维并抓取监测页面内容,使用BeautifulSoup包解析抓取的内容、查找想要的资源是否出现,使用email、smtplib包发邮件提醒新资源出现了(如果手机有邮箱客户端就可以很快收到提醒了)。
以下贴上脚本源码,在红色位置填上自己的信息即可。
# 登录neu6抓取内容
import urllib.request
import urllib.parse
import http.cookiejar
#设置时钟
import time
# 解析抓取内容
from bs4 import BeautifulSoup
import io
import sys
# 发送邮件提醒
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
import smtplib
# 登录六维,两个参数:用户名un和密码pw
def login_neu6(un,pw):
#post的内容
values={
'password':pw,
'username':un,
'quickforward':'yes',
'handlekey':'ls'
}
#登陆的地址
logUrl="http://bt.neu6.edu.cn/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1"
#构建cook
cook=http.cookiejar.CookieJar()
#构建openner
openner=urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cook))
#添加headers
openner.addheaders = [('User-agent', 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36')]
r=openner.open(logUrl,urllib.parse.urlencode(values).encode())
#print(r.read().decode('gbk'))
r=openner.open("http://bt.neu6.edu.cn/forum-13-1.html") # 要监控的页面的网址
all_html = r.read().decode('gbk')
return all_html
# 解析抓取到的内容,查找资源是否存在。两个参数:登录后打开的页面html_content、查找的电影资源名称film
def check_neu6(html_content,film):
#sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030') #改变标准输出的默认编码
soup = BeautifulSoup(html_content,"lxml")
result = soup.find_all("a",class_="s xst")
exist = False
for re in result:
find_index = re.get_text().find(film)
if find_index >= 0:
exist = True
break
return exist
# 发送邮件提醒,一个参数:查找的电影资源名称film
# 方法来自廖雪峰官网python教程
# 注意:可能会被某些邮箱识别为垃圾邮件
def email_alert(film):
def _format_addr(s):
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))
# 确保你的邮箱开启了SMTP功能
from_addr = "XXXXXXXXX@126.com" #### 在这填入登录邮箱
password = "XXXXXXXXX" #### 在这填入邮箱登陆密码
to_addr = "XXXXXXX@QQ.com" #### 在这填入要接受提醒的邮箱
smtp_server = "smtp.126.com" #### SMTP服务器地址
msg = MIMEText('<%s>有资源了' % film, 'plain', 'utf-8')
msg['From'] = _format_addr('FROM <%s>' % from_addr)
msg['To'] = _format_addr('TO <%s>' % to_addr)
msg['Subject'] = Header('有资源了', 'utf-8').encode()
server = smtplib.SMTP(smtp_server, 25)
server.set_debuglevel(1)
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr], msg.as_string())
server.quit()
# 每n分钟执行一次
def timer(n,film):
while True:
content = login_neu6("username","password") #### 在这填入六维用户名和密码
is_exist = check_neu6(content,film)
if is_exist:
email_alert(film)
print("邮件已发送,请设置参数后重新开启程序")
break
time.sleep(n*60)
# 每15分钟检查一下页面是否有“雷神”的资源
timer(15,"雷神") #### 在这设置查找的时间间隔和电影名称(由于资源区更新较慢,建议不要设置太短的时间,那样既浪费计算资源又有可能被识别为账号异常)
注意:监测页面的时间间隔不要太短,不要给六维服务器带来很大压力。
本篇内容请随意转载,转载注明出处。
Comments
Post a Comment