最近无聊刷完了绝命毒师,这应该是我看过所有美剧里面感觉最完美的一部了,逻辑基本没什么大问题,埋的伏笔基本也填完坑。唯一不足的就是walt的智商感觉碾压了剧里面所有人,没什么精彩的智力博弈,唯一能抗衡的炸鸡叔也死得太早了,实在不过瘾(无聊的家庭肥皂剧情节也太多了XD)。看完之后我就迫不及待地开始追毒师的前作风骚律师,但无奈网上的资源良莠不齐,有种子的也要一个一个点,于是乎写了个py脚本方便迅雷自动下载剧集(支持迅雷9和10),代码如下:
import requests
import sys
from bs4 import BeautifulSoup
from win32com.client import Dispatch
# 迅雷下载函数
def thunder_download(url, filename):
thunder = Dispatch('ThunderAgent.Agent.1')
thunder.AddTask(url, filename, r"F:\迅雷下载")
thunder.CommitTasks()
print("任务已建立,开始下载:{}...".format(filename))
# 爬虫函数
def get_request(url):
user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Connection': 'keep-alive',
'User-Agent': user_agent,
}
while True:
try:
res = requests.get(url, headers=headers, timeout=10)
except requests.exceptions.ConnectionError:
print('ConnectionError -- please wait 3 seconds')
time.sleep(3)
except requests.exceptions.ChunkedEncodingError:
print('ChunkedEncodingError -- please wait 3 seconds')
time.sleep(3)
except:
print('Unfortunitely -- An Unknow Error Happened, Please wait 3 seconds')
time.sleep(3)
else:
bs = BeautifulSoup(res.text, "lxml")
return bs
def main(argv=sys.argv):
# 进入搜索结果界面
is_or_not_search = True
while is_or_not_search:
search_word = input('请输入搜索关键词: ')
url = "http://www.yyetss.com/Search/index/?s_keys="
bs = get_request(url + search_word)
itemInfo = bs.find_all('a', class_="imgbox")
if itemInfo == []:
while True:
flag = input("查询结果:0,是否继续查询(yes/no)")
if flag == "no":
is_or_not_search = False
break
elif flag == "yes":
break
else:
print("请输入正确的选项!")
continue
else:
for i in itemInfo:
title = i.get('title')
print(str(itemInfo.index(i) + 1) + ":" + title)
break
# 进入具体剧集界面
if is_or_not_search == True:
while True:
try:
movie_name = input("请选择你要下载的剧集: ")
movie_value = itemInfo[int(movie_name) - 1]
except (IndexError, ValueError):
print("请输入正确的选项!")
except Exception:
print("未知错误!")
else:
break
movie_url = "http://www.yyetss.com" + movie_value.get('href')
movie_bs = get_request(movie_url)
magnetInfo = movie_bs.find_all('a', target="_blank")
while True:
for i in magnetInfo:
magnet = i.string
print(str(magnetInfo.index(i) + 1) + ":" + magnet)
# 获取需要下载的磁力链接,调用迅雷进行下载
while True:
try:
download_name = input("请选择你要下载的链接: ")
download_value = magnetInfo[int(download_name) - 1]
except (IndexError, ValueError):
print('请输入正确的选项!')
except Exception:
print("未知错误!")
else:
break
download_url = download_value.get('href')
download_file_name = magnetInfo[int(download_name) - 1].string
thunder_download(download_url, download_file_name)
flag = input('请问需要继续下载吗(yes/no): ')
if flag == "no":
print('感谢使用,by May')
break
else:
continue
if __name__ == "__main__":
sys.exit(main())
如果碰到爬虫爬不到的内容,可以通过模拟浏览器登陆直接获取种子页面(需要浏览器驱动支持),下面只放个代码大概,后面的内容也差不多:
driver = webdriver.Chrome(r'C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe')
driver.get("http://www.yyetss.com/")
ad = driver.find_elements_by_class_name('close')[0]
name_input = driver.find_element_by_tag_name('input')
search = driver.find_element_by_id('header-search')
ad.click()
name_input.send_keys('风骚律师')
search.click()
差不多就这么多,it’s all good,man!
现在还有大礼包免费赠送
推荐一下我建的python学习交流扣扣qun:850973621,群里有免费的视频教程,开发工具、
电子书籍、项目源码分享。学习python web、python爬虫、数据分析、大数据,人工智能等
技术有不懂的可以加入一起交流学习,一起进步