平時非常喜歡80s網站下載電影,網站電影的更新速度還算不錯,爬取它的網站獲取迅雷鏈接 ,使用迅雷自動下載電影豈不是爽歪歪。
一、基本思路
1、網頁基礎地址:http://80s.la
2、評分網頁:http://80s.la/movie/list/----g,全部類型電影評分規則從高到低
3、獲取總頁數,找到每個頁面地址規律,這個很好找
4、獲取每部電影的迅雷鏈接
5、循環將鏈接寫到文本文件中
二、獲取迅雷鏈接代碼思路
1、初始化init函數
def __init__(self):
# 網站地址
self.basic_url = r"http://80s.la"
self.basic_web_url = r"http://80s.la/movie/list/----g-p"
2、通用解析頁面方法,使用了bs4
def html_text(self, url):
"""
通用解析頁面方法
"""
rep = requests.get(url)
html = rep.text
bf = bs4.BeautifulSoup(html, 'lxml')
return bf
3、解析basic_web_url頁面,獲取總頁數
def total_num(self):
""""
解析頁面,獲取總頁數
"""
bf = self.html_text(self.basic_web_url)
a_bf = bf.find('div', class_='pager').find_all('a')[5].get('href')
num = a_bf.split('-')
total = num[len(num)-1].replace('p', '')
return total
4、獲取頁面電影列表及每部電影的迅雷鏈接(核心代碼)
def movie_list(self):
"""
獲取頁面電影列表
"""
try:
for i in range(1, int(self.total_num())+1):
target_url = self.basic_web_url + str(i)
bf = self.html_text(target_url)
a_bf = bf.find('div', class_='clearfix noborder').find('ul', class_='me1 clearfix').find_all('a')
for num in range(0, len(a_bf)-1, 2):
print("第{}部".format(str((i-1)*25+num//2+1)))
movie_url = self.basic_url + a_bf[num].get('href')
movie_bf = self.html_text(movie_url)
movie_a_bf = movie_bf.find('div', class_='cpagelist clearfix cpdl2list-b4')
href_url = ''
if movie_a_bf:
href_url = movie_a_bf.find('form').find('ul').find('li', class_='clearfix dlurlelement backcolor1')\
.find('span', class_='xunlei dlbutton1').find('a').get('href')
content = a_bf[num].get('title') + ',' + href_url
with open(r'movie.txt', 'a+', encoding='utf-8') as f:
f.write(content + '\n')
print("更新電影列表完成!")
except Exception as e:
print(e)
pass
三、最終效果(文件名加迅雷鏈接的格式)
四、總結說明
用迅雷打開鏈接地址下載的代碼已經寫完,但是目前只能一部一部電影下載,速度太慢,還在尋找更好的寫法,個人覺得使用線程池會好點,但是迅雷一次下載有數量限制。
沒有使用Scrapy的原因是一直無法解決某些網頁505的錯誤。beautifulsoup4結合線程的方法也可以達到很快的速度。