平时非常喜欢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结合线程的方法也可以达到很快的速度。