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結合線程的方法也可以達到很快的速度。

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