基于python实现的抓取腾讯视频所有电影的爬虫
我搜集了国内10几个电影网站的数据,里面近几十W条记录,用文本没法存,mongodb学习成本非常低,安装、下载、运行起来不会花你5分钟时间。
# -*- coding: utf-8 -*-
# by mazh. my site: http://blog.csdn.net/zhongqi2513
import re
import urllib2
from bs4 import BeautifulSoup
import string, time
import pymongoNUM = 0 #全局变量,电影数量
m_type = u'' #全局变量,电影类型
m_site = u'qq' #全局变量,电影网站#根据指定的URL获取网页内容
def gethtml(url):req = urllib2.Request(url) response = urllib2.urlopen(req) html = response.read()return html#从电影分类列表页面获取电影分类
def gettags(html):global m_typesoup = BeautifulSoup(html) #过滤出分类内容#print soup#<ul class="clearfix _group" gname="mi_type" gtype="1">tags_all = soup.find_all('ul', {'class' : 'clearfix _group' , 'gname' : 'mi_type'})#print len(tags_all), tags_all#print str(tags_all[1]).replace('\n', '')#<a _hot="tag.sub" class="_gtag _hotkey" href="http://v.qq.com/list/1_0_-1_-1_1_0_0_20_0_-1_0.html" title="动作" tvalue="0">动作</a>re_tags = r'<a _hot=\"tag\.sub\" class=\"_gtag _hotkey\" href=\"(.+?)\" title=\"(.+?)\" tvalue=\"(.+?)\">.+?</a>'p = re.compile(re_tags, re.DOTALL)tags = p.findall(str(tags_all[0]))if tags:tags_url = {}#print tagsfor tag in tags:tag_url = tag[0].decode('utf-8')#print tag_urlm_type = tag[1].decode('utf-8')tags_url[m_type] = tag_url else:print "Not Find"return tags_url#获取每个分类的页数
def get_pages(tag_url):tag_html = gethtml(tag_url)#div class="paginatorsoup = BeautifulSoup(tag_html) #过滤出标记页面的html#print soup#<div class="mod_pagenav" id="pager">div_page = soup.find_all('div', {'class' : 'mod_pagenav', 'id' : 'pager'})#print div_page #len(div_page), div_page[0]#<a class="c_txt6" href="http://v.qq.com/list/1_2_-1_-1_1_0_24_20_0_-1_0.html" title="25"><span>25</span></a>re_pages = r'<a class=.+?><span>(.+?)</span></a>'p = re.compile(re_pages, re.DOTALL)pages = p.findall(str(div_page[0]))#print pagesif len(pages) > 1:return pages[-2]else:return 1def getmovielist(html):soup = BeautifulSoup(html)#<ul class="mod_list_pic_130">divs = soup.find_all('ul', {'class' : 'mod_list_pic_130'})#print divsfor div_html in divs:div_html = str(div_html).replace('\n', '')#print div_htmlgetmovie(div_html)def getmovie(html):global NUMglobal m_typeglobal m_site#<h6 class="caption"> <a href="http://www.tudou.com/albumcover/Z7eF_40EL4I.html" target="_blank" title="徒步旅行队">徒步旅行队</a> </h6> <ul class="info"> <li class="desc">法国卖座喜剧片</li> <li class="cast"> </li> </ul> </div> <div class="ext ext_last"> <div class="ext_txt"> <h3 class="ext_title">徒步旅行队</h3> <div class="ext_info"> <span class="ext_area">地区: 法国</span> <span class="ext_cast">导演: </span> <span class="ext_date">年代: 2009</span> <span class="ext_type">类型: 喜剧</span> </div> <p class="ext_intro">理查德·达奇拥有一家小的旅游公司,主要经营法国游客到非洲大草原的旅游服务。六个法国游客决定参加理查德·达奇组织的到非洲的一...</p>re_movie = r'<li><a class=\"mod_poster_130\" href=\"(.+?)\" target=\"_blank\" title=\"(.+?)\"><img.+?</li>'p = re.compile(re_movie, re.DOTALL)movies = p.findall(html)if movies:conn = pymongo.Connection('localhost', 27017)movie_db = conn.dianyingplaylinks = movie_db.playlinks#print moviesfor movie in movies:#print movieNUM += 1print "%s : %d" % ("=" * 70, NUM)values = dict(movie_title = movie[1],movie_url = movie[0],movie_site = m_site,movie_type = m_type)print valuesplaylinks.insert(values)print "_" * 70NUM += 1print "%s : %d" % ("=" * 70, NUM)#else:# print "Not Find"def getmovieinfo(url):html = gethtml(url)soup = BeautifulSoup(html)#pack pack_album album_coverdivs = soup.find_all('div', {'class' : 'pack pack_album album_cover'})#print divs[0]#<a href="http://www.tudou.com/albumplay/9NyofXc_lHI/32JqhiKJykI.html" target="new" title="《血滴子》独家纪录片" wl="1"> </a> re_info = r'<a href=\"(.+?)\" target=\"new\" title=\"(.+?)\" wl=\".+?\"> </a>'p_info = re.compile(re_info, re.DOTALL)m_info = p_info.findall(str(divs[0]))if m_info:return m_infoelse:print "Not find movie info"return m_infodef insertdb(movieinfo):global connmovie_db = conn.dianying_atmovies = movie_db.moviesmovies.insert(movieinfo)if __name__ == "__main__":global conntags_url = "http://v.qq.com/list/1_-1_-1_-1_1_0_0_20_0_-1_0.html"#print tags_urltags_html = gethtml(tags_url)#print tags_htmltag_urls = gettags(tags_html)#print tag_urlsfor url in tag_urls.items():print str(url[1]).encode('utf-8') #,url[0]maxpage = int(get_pages(str(url[1]).encode('utf-8')))print maxpagefor x in range(0, maxpage):#http://v.qq.com/list/1_0_-1_-1_1_0_0_20_0_-1_0.htmlm_url = str(url[1]).replace('0_20_0_-1_0.html', '')movie_url = "%s%d_20_0_-1_0.html" % (m_url, x)print movie_urlmovie_html = gethtml(movie_url.encode('utf-8'))#print movie_htmlgetmovielist(movie_html)time.sleep(0.1)
基于python实现的抓取腾讯视频所有电影的爬虫相关推荐
- 用python实现的抓取腾讯视频所有电影的爬虫
原文地址:http://www.pythontab.com/html/2013/pythonhexinbiancheng_0823/547.html
- Python爬虫实现抓取腾讯视频所有电影-源码【实战必学】
用python实现的抓取腾讯视频所有电影的爬虫 1. # -*- coding: utf-8 -*-2. import re3. import urllib24. from bs4 import Be ...
- python抓取腾讯视频弹幕_Python实战 | 如何抓取腾讯视频弹幕
原标题:Python实战 | 如何抓取腾讯视频弹幕 当代年轻人的快乐是网络给的. 如果有人吐槽周末太无聊,他们一定会反驳: 是追剧不香吗? 是吃鸡不好玩吗? 周末辣么短,怎么会无聊呢? 诚然,追剧和游 ...
- Python爬虫实战,requests模块,Python实现抓取腾讯视频弹幕评论
前言 利用Python实现抓取腾讯视频弹幕,废话不多说. 让我们愉快地开始吧~ 开发工具 Python版本: 3.6.4 相关模块: requests模块: pandas模块 以及一些Python自带 ...
- 使用javascript在各大视频网站一键抓取无水印m3u8格式视频并将视频下载成mp4格式(以Google抓取腾讯视频为例)
两三天没有更新博客了,最近博主有点夏乏(其实是懒),今日在划水的时候无意中学到了使用javascrpit抓取m3u8格式视频的小技巧,因此进行延伸并作此博客进行记录.接下来,我将使用javascrip ...
- python抓取腾讯视频弹幕_Python爬虫练习:腾讯视频弹幕数据采集
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于菜鸟学Python数据分析 1.网页分析 本文以爬取<脱 ...
- 【网络爬虫实战】抓取腾讯视频评论
首先 腾讯视频(青云志)中的评论是有多页的,涉及到翻页.猜测评论不是都在网页源码中的,查看网页源码确实不在. 第二, 这里通过fiddler获得firefox中新的js网页的url,然后打开此网页.这 ...
- python爬取腾讯视频弹幕_网络爬虫实战(四):爬取腾讯视频电视剧弹幕-Go语言中文社区...
文章目录 实战背景 说到被翻拍最多的大概就是金庸先生的剧了,有华人的地方就会有金庸剧.而在他的多部小说中,翻拍次数最多的无疑就是<倚天屠龙记>了,而且次数已经高达十四次.最早的是1963香 ...
- 简单四步抓取腾讯视频MP4文件
1. 获取视频播放页地址,如:https://v.qq.com/x/page/j0329yq5lu0.html 2. 视频正片开播后,在H5播放器的右键菜单中选择"复制调试信息". ...
最新文章
- 遇到 ORACLE 错误 1115,ORA-01114、ORA-27067错误案例一则
- 对Java初学者来说,到底Java有哪些高效的开源库?
- python3 byte 字面值_bytearray() Python 内置函数
- git add remote_Git常用命令
- Bootstrap Table的使用小结
- 由于芯片短缺 现代汽车牙山工厂将再度停产
- Codeforces上通过数超过5W人的题
- ubuntu nginx配置虚拟主机,目录
- Python基于迁移学习的手势识别实战【图像多分类任务】【实测准确度超过99.5%】
- caxa自动保存的文件在哪里_怎样删除CAXA的临时文件
- 北漂8年的程序员,终于在疫情之下决定撤退老家了
- iOS Game Center 登陆验证实现
- dell Vostro3670安装固态硬盘、win10系统教程
- java gui 记_java GUI简单记事本
- 中国人保为嘉德奥通承保产品责任险,为消费者保驾护航!
- CSS display(显示)详解 与 visibility(可见性)详解[第七天]
- win10系统电脑声音图标正常,但没有声音
- Final Cut Pro X 清除缓存方法
- 给想做亚马逊测评的你一些忠告!千万不要被骗了!
- Git版本控制中的文件的四种状态
热门文章
- yum [Errno 256] No more mirrors to try
- 蚂蚁分类信息后台添加手机端导航项出现空白行解决方法
- 信创办公–基于WPS的PPT最佳实践系列 (幻灯片的播放和打印)
- 建立自己的计算机语言
- MapTask运行机制详解以及Map任务的并行度,ReduceTask 工作机制以及reduceTask的并行度,MapReduce总体工作机制
- 源码分析 RocketMQ DLedger 多副本即主从切换实现原理,java开发数据库面试题
- Unity URP运动模糊效果Shader
- GT Transceivers Wizard IP使用实例
- 【jsliang 小调查】相互宝关停背后和全民保小剖析
- 有一行电文,已按下面规律译成密码: a→z b→y c→x A→Z B→Y C→X ,输出原文