文档章节

一只小虫子,360视频(新手轻点吐槽)

战斗机
 战斗机
发布于 2014/06/13 18:43
字数 361
阅读 314
收藏 9

运行

sp=Spider()

sp.go()

import urllib.request
import re
import sys
import threading

class Spider:
    def __init__(self):
        self.category={"dianying":"http://www.360kan.com/dianying/list.php","dianshi":"http://www.360kan.com/dianshi/list.php"}
    def go(self):
        dataAll=[]
        for i in self.category.items():
            mtype=i[0]
            baseurl=i[1]
            for n in range(1,21):
                thread=myThread(n,mtype,baseurl)
                thread.start()
        # print(dataAll)
    def getHtml(self,url):# 获取html内容
        response=urllib.request.urlopen(url)
        if response.getcode() != 200:
            exit()
        html=response.read().decode('utf-8')
        return html
    def matchItems(self,html,mtype):#匹配详情
        items=[]
        if(mtype=='dianying'):
            out=re.findall(r'''<li class="le-figure le-figure-horizontal">.*?</li>''',html,re.S)
        elif mtype=='dianshi':
            out=re.findall(r'''<li\s*id="movie-.*?"\s*class="le-figure le-figure-horizontal">.*?</li>''',html,re.S)
        for i in out:
            # url
            pattern= re.compile(r'<div class="pic">\s*<a\s*href="(.*?)".*?</div>',re.S)
            url="http://www.360kan.com/" + pattern.findall(i)[0]

            # 封面图片
            if mtype=='dianying':
                pattern= re.compile(r'<img\s*data-src="(.*)"\s*/>',re.S)
            elif mtype=='diashi':
                pattern= re.compile(r'<img\s*src="(.*)"\s*/>',re.S)
            img=pattern.findall(i)[0]

            # 片名
            pattern = re.compile(r'<p\s*class="video-title">.*?<a.*?>(.*?)</a>.*?</p>',re.S)
            title = pattern.findall(i)[0]

            # 导演
            if mtype=='dianying':
                pattern = re.compile(r'<span class="text">导演:</span>(.*?)</p>',re.S)
                director=pattern.findall(i)[0]
            elif mtype=='dianshi':
                director=''

            # 主演
            pattern = re.compile(r'<span class="text">主演:</span>(.*?)</p>',re.S)
            main_actors_html=pattern.findall(i)[0]
            pattern=re.compile(r'<a.*?>(.*?)</a>')
            main_actors=pattern.findall(main_actors_html)

            # 年代
            pattern=re.compile(r'<span class="text">年代:</span>(.*?)</p>')
            year=pattern.findall(i)[0]

            # 类型
            if mtype=='dianying':
                pattern=re.compile(r'<span class="text">看点:</span>(.*?)</p>',re.S)
                rsl=pattern.findall(i)
                if len(rsl)>0:
                    result_type_html=rsl[0]
                    pattern=re.compile(r'<a.*?>(.*?)</a>',re.S)
                    types=pattern.findall(result_type_html)
                else:
                    types=''
            elif mtype=='dianshi':
                types=''

            items.append((url,title,main_actors,year,types))
        return items


class myThread(threading.Thread):
    def __init__(self,n,mtype,baseurl):
        self.n=n
        self.mtype=mtype
        self.baseurl=baseurl
        threading.Thread.__init__(self)
    def run(self):
        spider=Spider()
        html=spider.getHtml(self.baseurl+'?pageno='+str(self.n))
        if html:
            items=spider.matchItems(html,self.mtype)
        else:
            items=''
        print(items)
        return items


© 著作权归作者所有

共有 人打赏支持
战斗机
粉丝 1
博文 103
码字总数 21015
作品 0
丰台
后端工程师
历史久远 第一个计算机Bug已经诞生67年

对于开发人员来说,Bug是无法避免也最令人头疼的,你需要不停地Debug、不停地Debug…… Bug一词的原意是“臭虫”或“虫子”。现在,在电脑系统或程序中,如果隐藏着的一些未被发现的缺陷或问...

开源中国董事会主席
2012/09/11
3.4K
36
我的Linux自学之路

作为一只菜鸟,并且没有任何Linux的经验,我从网上下载的视频自学Linux。欢迎各位新手或大师指点,开通博客意在记录自己学习的点滴。 由于项目在公安行业内,系统的版本无法跟现代的大型网后...

枕着稻香
2017/05/03
0
0
一步步编写自己的PHP爬取代理IP项目(一)

第一章节主要给大家普及一下爬虫的概念以及相关的知识,让大家对后面的学习打下扎实的基础。如果你是有经验的开发者,完全可以跳过第一章进入第二章的学习了。 这个项目主要围绕两大核心点展...

NateHuang
09/14
0
0
集成学习lgb库调参的粒子群方法

粒子群算法是模拟鸟群蜂群的觅食行为的一种算法。基本思想是通过群体中个体之间的协作和信息共享来寻找最优解。试着想一下一群鸟在寻找食物,在这个区域中只有一只虫子,所有的鸟都不知道食物...

necther
06/12
0
0
值得程序员一看的 8 个冷门小知识

想要成为一名成功的程序员,我们除了了解不同编程语言的设计思路,也应当了解编程的发展历史,从而判断未来的编程技术将走向何方。接下就为大家普及下计算机发展历程中的8个冷门小知识! 1....

达尔文
2016/12/26
7.3K
8

没有更多内容

加载失败,请刷新页面

加载更多

初级开发-编程题

` public static void main(String[] args) { System.out.println(changeStrToUpperCase("user_name_abc")); System.out.println(changeStrToLowerCase(changeStrToUpperCase("user_name_abc......

小池仔
今天
4
0
现场看路演了!

HiBlock
昨天
12
0
Rabbit MQ基本概念介绍

RabbitMQ介绍 • RabbitMQ是一个消息中间件,是一个很好用的消息队列框架。 • ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的s...

寰宇01
昨天
9
0
官方精简版Windows10:微软自己都看不过去了

微软宣布,该公司正在寻求解决方案,以减轻企业客户的Windows 10规模。该公司声称,企业客户下载整个Windows 10文件以更新设备既费钱又费时。 微软宣布,该公司正在寻求解决方案,以减轻企业...

linux-tao
昨天
14
0
TypeScript基础入门之JSX(二)

转发 TypeScript基础入门之JSX(二) 属性类型检查 键入检查属性的第一步是确定元素属性类型。 内在元素和基于价值的元素之间略有不同。 对于内部元素,它是JSX.IntrinsicElements上的属性类型...

durban
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部