文档章节

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

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

运行

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
博文 49
码字总数 21015
作品 0
丰台
后端工程师
苹果触控鼠标和触控板 (1)

一切从触摸开始 本期节目是专为 Mac 新手准备的。即便你对 OS X 一无所知也不要紧,因为第一次接触苹果电脑,首要的不是学习 OS X 操作系统,而是要了解苹果的 Magic Mouse 触控鼠标和 Trac...

Hackintosh ⋅ 2013/01/17 ⋅ 0

历史久远 第一个计算机Bug已经诞生67年

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

开源中国董事会主席 ⋅ 2012/09/11 ⋅ 36

我的Linux自学之路

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

枕着稻香 ⋅ 2017/05/03 ⋅ 0

值得程序员一看的 8 个冷门小知识

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

达尔文 ⋅ 2016/12/26 ⋅ 8

集成学习lgb库调参的粒子群方法

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

necther ⋅ 06/12 ⋅ 0

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

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

异步社区 ⋅ 06/06 ⋅ 0

phpjm非商业版加密2015完美还原源代码不服贴源码测试啊

声明:只是感觉没必要php加密!居然加密了,都是“猿”没必要剥夺辛苦劳动成果,只是看不惯 “PHP加密免费版和授权版的算法不一样,免费版建议作为加密环境测试。授权版稳定性及特有的混淆编...

Liberxue ⋅ 2015/05/17 ⋅ 11

让不懂编程的人爱上iPhone开发(2017iOS11+Swift4+Xcode9版)-第5篇

好了,继续我们上次的课程。 提醒下大家,本系列教程的每一个章节都有对应的项目源代码,如果大家在看教程的过程中遇到任何问题,可以参考项目源代码。 源代码地址: https://github.com/ese...

王寒 ⋅ 2017/10/29 ⋅ 0

新手学习JavaScript

转自http://dancewithnet.com/2009/03/29/douglas-crockford/版权归原作者所有,仅供学习交流使用。 Douglas Crockford是JavaScript开发社区最知名的权威,是JSON、JSLint、JSMin和ADSafe之父...

deeper099 ⋅ 2011/09/29 ⋅ 1

木枝的工具集--啥都有额

此文档用于记录工作中常用的工具,便于自己和大家收藏使用,希望大家喜欢。不定时更新额! 音视频工具 视频下载 Video-Get https://video-get.com/ 小视频下载 http://www.downfi.com/video/...

木枝的纸飞机 ⋅ 2017/11/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

思路分析 如何通过反射 给 bean entity 对象 的List 集合属性赋值?

其实 这块 大家 去 看 springmvc 源码 肯定可以找到实现办法。 因为 spirngmvc 的方法 是可以 为 对象 参数里面的 list 属性赋值的。 我也没有看 具体的 mvc 源码实现,我这里只是 写一个 简...

之渊 ⋅ 28分钟前 ⋅ 0

vim使用手册--配对括号的查找

1、把光标放在标记有(、[或{处。 2、按%字符 3、此时光标的位置应当在配对的括号处 4、再次按%就可以跳回配对的第一个括号处。

dragon_tech ⋅ 32分钟前 ⋅ 0

c++ 、object-c printf,%02X和%x有什么区别 ?

%x即按十六进制输出,英文字母小写,右对齐。 %02X有以下变化:英文字母变大写,如果输出字符不足两位的,输出两位宽度,右对齐,空的一位补0。超过两位的,全部输出。 如果不用 %02x 会出现...

yizhichao ⋅ 37分钟前 ⋅ 0

Spring源码解析(七)——实例创建(中)

前言 上一节讲到了,Spring 会根据实例的作用域执行不同的创建逻辑,分别是 Singleton、Prototype、其他 Scope,其中 Singleton 会调用 getSingleton 从缓存中获取,缓存中没有才会创建实例;...

MarvelCode ⋅ 37分钟前 ⋅ 0

Thrift RPC实战(六) spring集成thrift

1.服务端设置 对泛型Thrift Service的支持, 通过采用spring配置以及反射的方式来实现.对于一个服务提供者来说,需要提供端口,接口以及接口实现类,因此在接口中spring配置文件中配置如下 <!...

lemonLove ⋅ 39分钟前 ⋅ 0

oracle11g自动分区使用

为什么使用自动分区? 在oracle11g之前,oracle是不支持自动分区功能的,这就可能导致我们系统在运行一段时间之后,就需要看看分区是否创建或者写触发器进行创建分区,否则就会导致数据无法入...

strict_nerd ⋅ 50分钟前 ⋅ 0

Spring mvc ViewResolver视图解析器实现机制

概要 我们在controller里面经常这样return一个ModelAndView。 return new ModelAndView("userList", "users", userList); DispatcherServlet 靠 ViewResolver 把 userList 解析为 /WEB-INF......

轨迹_ ⋅ 今天 ⋅ 0

策略模式

1.策略模式 策略模式是同一个行为的不同处理办法。策略模式和简单工厂模式的区别:1.策略模式主要是方法的执行方式,工厂模式要获取的对象。两者的侧重点不同。 ...

Cobbage ⋅ 今天 ⋅ 0

行政区划代码转为字典形式

原数据为: http://www.mca.gov.cn/article/sj/xzqh/2018/201804-12/201804-06041553.html 手动替换了一下格式,并使用下面的代码处理. # 输入格式s = """110000:北京市110101:东城区1101...

漫步海边小路 ⋅ 今天 ⋅ 0

android apk 签名

创建key,需要用到keytool.exe (位于C:\Program Files\Java\jdk1.6.0_10\bin目录下),使用产生的key对apk签名用到的是jarsigner.exe (位于C:\Program Files\Java\jdk1.6.0_10\bin目录下),把...

国仔饼 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部