Python爬虫爬取80s电影网的评分高的电影及自动下载

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章