Python多线程爬虫获取电影下载链接

一些电影资源网站往往广告太多,不想看广告所以做了这个程序

首先需要先分析网站的搜索链接,这里只用到了“爱下电影网”和“电影天堂”两个网站

爱下电影:http://www.aixia.cc/plus/search.php?searchtype=titlekeyword&q=%E9%80%9F%E5%BA%A6%E4%B8%8E%E6%BF%80%E6%83%85

电影天堂:http://s.dydytt.net/plus/so.php?kwtype=0&searchtype=title&keyword=%CB%D9%B6%C8%D3%EB%BC%A4%C7%E9

可以发现这两个网站搜索结果链接前部分可以固定死,后面肩上keyword(关键词)即可

所以我们的搜索链接可以按照这个规律直接拼接出来

爬虫基本思考:



二三级均为线程


首先对于queue模块,这是一种队列类型,也就是具有先入先出的特点,用这个来存放需要下载的链接

使用:

1.写入

object=queue.Queue()

object.put('what you want')

object.task_done()

2.读出

object.get()

注意如果没有对象在object中会出现堵塞

使用前一定先判断是否为空object.emoty()

其次就是thread模块

我是用的办法是创建自定义类继承与threading.Thread类


关于正则表达式这里就不再提了,我觉得正则表达式比BeautifulSoup和LXML好用一些



为了扩展性,每一个网站都用一个字典存放相关信息,这样以后需要添加其他网

站可以通过添加网站字典完成

设置一个url列表存放所有的网站信息字典

为了方便管理任务列表,我这里把所有任务放在一个key为网站名的字典中

变量展示:

task1=queue.Queue()
task2=queue.Queue()

Cannel={'爱下电影':task1,
        '电影天堂':task2
        }#队列的字典
downloadurl={'爱下电影':[],
             '电影天堂':[]}

"""
website中字典数据格式:
{
    'name':'网站名',
    'url':'网站地址半加工',
    'pat':[正则1,正则2],
    'root':'原本地址'
    'encode':'编码格式',
}
"""
aixiamovie={
    'name':'爱下电影',
    'url':r'http://www.aixia.cc/plus/search.php?searchtype=titlekeyword&q=',
    'root':r'http://www.aixia.cc',
    'pat':['<h1 class=".*?"><a href="(.*?)" target="_blank">','οnclick="copyUrl(.*?)">'],
    'encode':'utf-8'
    }
tiantang={
    'name':'电影天堂',
    'url':r'http://s.dydytt.net/plus/so.php?kwtype=0&searchtype=title&keyword=',
    'root':r'http://s.dydytt.net',
    'pat':["<td width='.*?'><b><a href='(.*?)'>",'<td style=.*? bgcolor=.*?><a href="(.*?)">'],
    'encode':'gb2312',
    }
weblist=[]
weblist.append(aixiamovie)
weblist.append(tiantang)



任务启动类:

class taskstart():
    def __init__(self,keyword):
    
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值