文档章节

一只小虫子,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


© 著作权归作者所有

共有 人打赏支持
上一篇: python php $_POST
下一篇: php mcrypt加密解密
战斗机
粉丝 1
博文 103
码字总数 21015
作品 0
丰台
后端工程师
私信 提问
我的Linux自学之路

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

枕着稻香
2017/05/03
0
0
历史久远 第一个计算机Bug已经诞生67年

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

开源中国董事会主席
2012/09/11
3.4K
36
对阿里/百度/腾讯/360的吐槽。。

最近360挺火的。。总结一下自己感觉到的对这几家的吐槽吧,纯闲的没事瞎想的 对阿里 的吐槽多数是产品策略的吐槽,所以吐槽的多数是用户,买家和卖家 对百度的吐槽很多都是技术上的,所以多数...

陈Neil
2012/09/05
161
0
集成学习lgb库调参的粒子群方法

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

necther
06/12
0
0
一步步编写自己的PHP爬取代理IP项目(一)

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

NateHuang
09/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Ubuntu18.04 安装MySQL

1.安装MySQL sudo apt-get install mysql-server 2.配置MySQL sudo mysql_secure_installation 3.设置MySQL非root用户 设置原因:配置过程为系统root权限,在构建MySQL连接时出现错误:ERROR...

AI_SKI
今天
2
0
3.6 rc脚本(start方法) 3.7 rc脚本(stop和status方法) 3.8 rc脚本(以daemon方式启动)

3.6-3.7 rc脚本(start、stop和status方法) #!/usr/bin/env python# -*- coding: utf-8 -*-# [@Version](https://my.oschina.net/u/931210) : python 2.7# [@Time](https://my.oschina.......

隐匿的蚂蚁
今天
3
0
Cnn学习相关博客

CNN卷积神经网络原理讲解+图片识别应用(附源码) 笨方法学习CNN图像识别系列 深度学习图像识别项目(中):Keras和卷积神经网络(CNN) 卷积神经网络模型部署到移动设备 使用CNN神经网络进行...

-九天-
昨天
4
0
flutter 底部输入框 聊天输入框 Flexible

想在页面底部放个输入框,结果键盘一直遮住了,原来是布局问题 Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("评论"), ...

大灰狼wow
昨天
4
0
Kernel I2C子系统

备注:所有图片来源于网络 1,I2C协议: 物理拓扑: I2C总线由两根信号线组成,一条是时钟信号线SCL,一条是数据信号线SDA。一条I2C总线可以接多个设备,每个设备都接入I2C总线的SCL和SDA。I...

yepanl
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部