我搜集了国内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实现的抓取腾讯视频所有电影的爬虫相关推荐

  1. 用python实现的抓取腾讯视频所有电影的爬虫

    原文地址:http://www.pythontab.com/html/2013/pythonhexinbiancheng_0823/547.html

  2. Python爬虫实现抓取腾讯视频所有电影-源码【实战必学】

    用python实现的抓取腾讯视频所有电影的爬虫 1. # -*- coding: utf-8 -*-2. import re3. import urllib24. from bs4 import Be ...

  3. python抓取腾讯视频弹幕_Python实战 | 如何抓取腾讯视频弹幕

    原标题:Python实战 | 如何抓取腾讯视频弹幕 当代年轻人的快乐是网络给的. 如果有人吐槽周末太无聊,他们一定会反驳: 是追剧不香吗? 是吃鸡不好玩吗? 周末辣么短,怎么会无聊呢? 诚然,追剧和游 ...

  4. Python爬虫实战,requests模块,Python实现抓取腾讯视频弹幕评论

    前言 利用Python实现抓取腾讯视频弹幕,废话不多说. 让我们愉快地开始吧~ 开发工具 Python版本: 3.6.4 相关模块: requests模块: pandas模块 以及一些Python自带 ...

  5. 使用javascript在各大视频网站一键抓取无水印m3u8格式视频并将视频下载成mp4格式(以Google抓取腾讯视频为例)

    两三天没有更新博客了,最近博主有点夏乏(其实是懒),今日在划水的时候无意中学到了使用javascrpit抓取m3u8格式视频的小技巧,因此进行延伸并作此博客进行记录.接下来,我将使用javascrip ...

  6. python抓取腾讯视频弹幕_Python爬虫练习:腾讯视频弹幕数据采集

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于菜鸟学Python数据分析 1.网页分析 本文以爬取<脱 ...

  7. 【网络爬虫实战】抓取腾讯视频评论

    首先 腾讯视频(青云志)中的评论是有多页的,涉及到翻页.猜测评论不是都在网页源码中的,查看网页源码确实不在. 第二, 这里通过fiddler获得firefox中新的js网页的url,然后打开此网页.这 ...

  8. python爬取腾讯视频弹幕_网络爬虫实战(四):爬取腾讯视频电视剧弹幕-Go语言中文社区...

    文章目录 实战背景 说到被翻拍最多的大概就是金庸先生的剧了,有华人的地方就会有金庸剧.而在他的多部小说中,翻拍次数最多的无疑就是<倚天屠龙记>了,而且次数已经高达十四次.最早的是1963香 ...

  9. 简单四步抓取腾讯视频MP4文件

    1. 获取视频播放页地址,如:https://v.qq.com/x/page/j0329yq5lu0.html 2. 视频正片开播后,在H5播放器的右键菜单中选择"复制调试信息". ...

最新文章

  1. 遇到 ORACLE 错误 1115,ORA-01114、ORA-27067错误案例一则
  2. 对Java初学者来说,到底Java有哪些高效的开源库?
  3. python3 byte 字面值_bytearray() Python 内置函数
  4. git add remote_Git常用命令
  5. Bootstrap Table的使用小结
  6. 由于芯片短缺 现代汽车牙山工厂将再度停产
  7. Codeforces上通过数超过5W人的题
  8. ubuntu nginx配置虚拟主机,目录
  9. Python基于迁移学习的手势识别实战【图像多分类任务】【实测准确度超过99.5%】
  10. caxa自动保存的文件在哪里_怎样删除CAXA的临时文件
  11. 北漂8年的程序员,终于在疫情之下决定撤退老家了
  12. iOS Game Center 登陆验证实现
  13. dell Vostro3670安装固态硬盘、win10系统教程
  14. java gui 记_java GUI简单记事本
  15. 中国人保为嘉德奥通承保产品责任险,为消费者保驾护航!
  16. CSS display(显示)详解 与 visibility(可见性)详解[第七天]
  17. win10系统电脑声音图标正常,但没有声音
  18. Final Cut Pro X 清除缓存方法
  19. 给想做亚马逊测评的你一些忠告!千万不要被骗了!
  20. Git版本控制中的文件的四种状态

热门文章

  1. yum [Errno 256] No more mirrors to try
  2. 蚂蚁分类信息后台添加手机端导航项出现空白行解决方法
  3. 信创办公–基于WPS的PPT最佳实践系列 (幻灯片的播放和打印)
  4. 建立自己的计算机语言
  5. MapTask运行机制详解以及Map任务的并行度,ReduceTask 工作机制以及reduceTask的并行度,MapReduce总体工作机制
  6. 源码分析 RocketMQ DLedger 多副本即主从切换实现原理,java开发数据库面试题
  7. Unity URP运动模糊效果Shader
  8. GT Transceivers Wizard IP使用实例
  9. 【jsliang 小调查】相互宝关停背后和全民保小剖析
  10. 有一行电文,已按下面规律译成密码: a→z b→y c→x A→Z B→Y C→X ,输出原文