色彩时光 | 记录程序员世界的点点滴滴

电影天堂网站的电影采集程序demo


学习python一段时间,写了个电影天堂网站的电影采集程序demo练手。有待改进
地方考虑用多线程采集。

代码仓库地址:
https://bitbucket.org/passi0n/get_dytt/overview
感觉bitbucket比github好用些,且支持中文。


# -*- coding=utf-8 -*-
# encoding=utf-8
__author__ = 'rgbtime.com'


import sys
sys.path.append("libs")
from bs4 import BeautifulSoup

import urllib2,xlrd,xlwt

def get_dytt(val1,val2):
    base_url="http://www.dytt8.net"
    #/html/gndy/oumei 7
    base_list_url="%s%s"%(base_url,val1)
    film_list=[]
    try:
        for i in range(21):
            url_list="%s/list_%s_%s.html"%(base_list_url,val2,i+1)
            print url_list
            response=urllib2.urlopen(url_list)
            content=response.read()
            content=content.decode('gb18030', 'ignore').encode('utf8')
            soup_list=BeautifulSoup(content)
            table_list=soup_list.select('[class=co_content8]')[0].ul.find_all("table")
            for table in table_list:
                tr_list=table.find_all('tr');
                #print tr_list
                a_item=tr_list[1].find_all('a')[0]
                #print u"764".index(val2)
                if u"764".index(val2)>=0:
                    #栏目
                    a_item=tr_list[1].find_all('a')[1]
                url_detail="%s%s"%(base_url,a_item['href'])
                title=a_item.get_text()
                desc=tr_list[3].get_text()
                url_down=get_detail(url_detail)
                putout="""
                url_detail:%3s
                title:%3s
                desc:%s
                url_down:%s
                %s
                """%(url_detail,title,desc,url_down,"-"*80)
                print putout
                film={
                    'title':title,
                    'url_down':url_down,
                    'url_org':url_detail,
                    'desc':desc,
                }
                film_list.append(film)
    except Exception,ex:
        print ex.message
    save_execl(film_list)

def get_detail(url):
    #print url
    response=urllib2.urlopen(url)
    content=response.read()
    content=content.decode('gb18030', 'ignore').encode('utf8')
    #print content
    soup_list=BeautifulSoup(content)
    #print soup_list.select('[class=co_content8]')[0].ul.table
    a=soup_list.select('[class=co_content8]')[0].ul.table.find_all("a")[0]
    url_down=a['href']
    return url_down

def save_execl(film_list):
    #print film_list
    f=xlwt.Workbook()
    sheet=f.add_sheet("my_sheet",cell_overwrite_ok=True)
    row0 = [u'电影名',u'日期',u'描述',u'下载地址']
    for row in range(len(film_list)):
        film=film_list[row]
        #print film.keys()
        sheet.write(row,0,film['title'])
        sheet.write(row,1,film['url_org'])
        sheet.write(row,2,film['url_down'])
        #sheet.write(row,3,film['desc'])
        desc=film['desc']
        desc_list=desc.split(u"◎")
        index=4
        for desc_item in desc_list:
            i,desc=desc_filter(desc_item)
            sheet.write(row,index+i,desc)
    f.save(r"test.xls")

def desc_filter(desc):
    print desc
    filter_list=[u"片 名",u"译 名",u"年 代",u"国 家",u"类 别",u"IMDb评分",u"片 长",u"导 演",u"主 演"]
    for filter_item in filter_list:
        #print filter_item,desc.find(filter_item)
        if desc.find(filter_item)>=0:
            desc=desc.replace(filter_item,"")
            return filter_list.index(filter_item),desc
    return -1,u''

#欧美
#get_dytt(u"/html/gndy/oumei",u"7")
#日韩
#get_dytt(u"/html/gndy/rihan",u"6")
#大陆
#get_dytt(u"/html/gndy/china",u"4")
#最新电影
#get_dytt(u"/html/gndy/dyzz",u"23")




您可能也对下面文章感兴趣:

Write a Comment


* Content (required) 10~500s

分类

热门标签

友情链接