文档章节

一只小虫子,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
集成学习lgb库调参的粒子群方法

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

necther
06/12
0
0
这本Python入门畅销书《“笨办法”学python 3》,不仅仅是一本书

此前,小编分享过一篇文章《跟着数百万人编程导师学C语言!》,介绍的是泽德 A. 肖大神的新书《“笨办法”学C语言》很多用户在后台留言,《“笨办法”学Python 3》什么时候出版?今天这本书终...

异步社区
06/06
0
0
值得程序员一看的 8 个冷门小知识

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

达尔文
2016/12/26
7.3K
8

没有更多内容

加载失败,请刷新页面

加载更多

下一页

180.mariadb 主从复制

参考:https://blog.csdn.net/chengxuzaza/article/details/62042920 睡觉睡觉,明天写 1.效果 当主库中数据有变化的时候,从库就自动同步 2. 环境要求 至少两台 linux服务器 (教程:https...

Lucky_Me
8分钟前
0
0
erlng file id3v1 id3v1.1

%% ---%% Excerpted from "Programming Erlang",%% published by The Pragmatic Bookshelf.%% Copyrights apply to this code. It may not be used to create training material, %% ......

xueyuse0012
10分钟前
0
0
RabbitMq的安装

环境Centos6.5 32位 JDK 1.7.8 Jdk的卸载 rpm -qa|grep jdk yum –y remove 上边的安装包 JDK的安装 Rpm –ivh jdk安装包 配置环境变量 export JAVA_BIN=/usr/java/jdk1.7.0_80/bin export J......

DemonsI
14分钟前
0
0
http和https协议

HTTPS全称为Hypertext Transfer Protocol over Secure Socket Layer,中文含义为“超文本传输协议在安全加密字层”,简单来说就是加密数据传输,通俗的说就是安全连接。 HTTPS安全超文本传输...

寰宇01
20分钟前
0
0
vue内引入语音播报功能

在vue项目中引入语音播报,使用的科大讯飞语音接入, 具体思路为每次接收到语音信息后存入一个数组,然后监听这个数组,开始冲第一个索引播放,并且同时根据vuex getter 来动态删减数量 给a...

originDu
28分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部