需求分析: 有些时候,想到网上找点小电影,但是又不想上网站上看,想下载下来慢慢品味。出于这种需求下,做了这么一个小工具。先上网上找提供磁力链接的网站,这里选择的是torrentkittyzw。
引入要使用的库:
import requests
from bs4 import BeautifulSoup
import csv # 利用csv文件保存数据
构造网址:
def CreateURL():
url = r"http://www.torrentkittyzw.info"
search = input('请输入要搜索的内容:')
page = r'/1.htm' #这里是搜索的页码,默认是第一页,也可以构造循环函数到生成多个页面url
indexURL = url+r'/s/'+search+page
return indexURL
定义url请求函数: 获取目标页面的源代码。由于只爬取一页的内容,因此没有做反爬措施。
def urlOpen(url):
res = requests.get(url)
res.encoding = 'UTF-8'
return res.text
解析索引页,获得详情页的地址列表:
def parseIndex(html):
soup = BeautifulSoup(html,'lxml')
detailUrlList = soup.select('.j_a1')
urlList=[]
for i in detailUrlList:
urlList.append(i.attrs['href'])
return urlList
解析详情页,获得详情页的标题和磁力链接:
def parseDetail(html):
soup = BeautifulSoup(html, 'lxml')
title = soup.select('.cnone')[0].h2.text
print('title:',title)
link = soup.select('#magnetLink')[0].text
print('link:',link)
#preview = soup.select('pre')[0].text # 磁力链接内容预览
Resources= [title, link]
return Resources
利用csv 文件把信息存储起来
def saveFile(Resources):
with open('download.csv','a+',newline='') as f:
csv_file = csv.writer(f, dialect='excel')
csv_file.writerow(Resources)
利用main函数把函数依据逻辑组合起来:
def main():
url = CreateURL()
html = urlOpen(url)
urlList = parseIndex(html)
for i in urlList:
html = urlOpen("http://www.torrentkittyzw.info" + i )
try:
Resources = parseDetail(html)
saveFile(Resources)
except:
print('出错了')
continue
input('结束')
if __name__ == '__main__':
main()
最后,到文件夹内的download.csv 文件 中便可以 获取我们需要的 链接即可~