需求分析: 有些时候,想到网上找点小电影,但是又不想上网站上看,想下载下来慢慢品味。出于这种需求下,做了这么一个小工具。先上网上找提供磁力链接的网站,这里选择的是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 文件 中便可以 获取我们需要的 链接即可~