• Python获取最新电影的信息


    这次将从电影天堂获取最新的电影的详细信息,这里电影的信息罗列的比较详细。

    本来只是想获取电影的迅雷链接,然后用迅雷去下载。但看到这里的电影的信息比较完整和详细,忍不住把所有信息都爬取下来了。

    下图是《猩球崛起3》 的简介,可以看到信息还是很多的。

     主要代码如下:

    import requests
    import re
    from bs4 import BeautifulSoup
    from time import sleep
    
    URL = "http://www.dytt8.net"
    url_index = "http://www.dytt8.net/html/gndy/dyzz/list_23_"
    
    def Get_index(number = 1):
        #传入索引页的页码,获取标题和对应的详情页的URL,将其构成字典返回
        url = url_index + str(number) + ".html"
        #传获取HTML源码
        res = requests.get(url)
        res.encoding = "gb2312"
        
        text = res.text
        
        #从索引页的源码中获取信息所在的部分并返回
        reg_name = r'《(.+?)》'
        reg_name = re.compile(reg_name)
        Soup = BeautifulSoup(text,'lxml')
        Soup = Soup.select('a["class=ulink"]')
        MyDict = dict()
        for s in Soup:
            try:
                name = re.findall(reg_name,s.text)[0]
            except:
                name = str(number)
                print("在%s中获取电影名失败" %s)
            url = URL + s['href']
            MyDict[name] = url
        
        if number == 1:
            reg_number = r'共(.+?)页/'
            reg_number = re.compile(reg_number)
            Max = re.findall(reg_number,text)[0]
            
            return Max,MyDict
        else:
            return MyDict
            
    
    def Get_info(url):
        #传入详情页的URL获取电影的详细的信息
        res = requests.get(url)
        res.encoding = "gb2312"
        text = (res.text)
        #print(text)
        Soup = BeautifulSoup(text,'lxml')
        Soup = Soup.select('div["id=Zoom"]')
        Soup = Soup[0].select("td")[0]
        return Soup
    
    def Get_info_2(text):
        reg_1 = r'(.+?)<br/>'
        reg_1 = re.compile(reg_1)
        
        reg_2 = r'(ftp:.+?)">'
        reg_2 = re.compile(reg_2)
        
        Xunlei = re.findall(reg_2,text)
        Xunlei = Xunlei[0]
        
        info = re.findall(reg_1,text)
        
        MyList = list()
        for i in info:
            
            i = i.replace('<br/>','')
            i = i.replace('','')
            i = i.replace('</table> ','')
            MyList.append(i)
        return Xunlei,MyList
    
    
    def DownLoad(Dict):
            for d in MyDict:
                url_2 = MyDict[d]
                try:
                    text= str(Get_info(url_2))
                    [Xunlei,MyList] = Get_info_2(text)
                    #print(Xunlei)
                    f = open("电影.txt",'a')
                    f.write(Xunlei+'
    ')
    
                    for i in MyList:
                        if '<' in i:
                            pass
                        else:
                            f.write(i+'
    ')
    
                    f.write("
    
    ")
                    f.close()
                except:
                    print("电影%s的详情下载失败!" %d)
                #print("%s 的详情下载完成!" %d)
    
    if __name__ == "__main__":
        
        [Max,MyDict] = Get_index()
        
        DownLoad(MyDict)
        
        sleep(2)
        
        for j in range(2,int(Max)+1):
            MyDict = Get_index(j)
            DownLoad(MyDict)
            print("第%d页下载完成!" %j)
            sleep(2)

    获取的结果的如下:

  • 相关阅读:
    OCP-1Z0-051-V9.02-162题
    OCP-1Z0-051-V9.02-161题
    OCP-1Z0-051-V9.02-160题
    Matlab中矩阵的分解
    OCP-1Z0-051-V9.02-158题
    OCP-1Z0-051-V9.02-157题
    Matlab中特殊的矩阵函数
    求Matlab中矩阵的秩和迹
    Matlab中的条件数
    在android里使用boost c++
  • 原文地址:https://www.cnblogs.com/jxc321/p/7674782.html
Copyright © 2020-2023  润新知