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

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

# -*- coding: utf-8 -*-
import re
import urllib2
from bs4import BeautifulSoup
import string, time
import pymongo
NUM   =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_type
  soup = BeautifulSoup(html)   #过滤出分类内容
  #print soup
  #<ulclass="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 tags
    for tagin tags:
      tag_url = tag[0].decode('utf-8')
      #print tag_url
      m_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)
  #divclass="paginator
  soup = BeautifulSoup(tag_html)   #过滤出标记页面的html
  #print soup
  #<divclass="mod_pagenav" id="pager">
  div_page = soup.find_all('div', {'class' :'mod_pagenav','id' :'pager'})
  #print div_page #len(div_page), div_page[0]
  #<aclass="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 pages
  if len(pages) >1:
    return pages[-2]
  else:
    return 1
def getmovielist(html):
  soup = BeautifulSoup(html)
  #<ulclass="mod_list_pic_130">
  divs = soup.find_all('ul', {'class' :'mod_list_pic_130'})
  #print divs
  for div_htmlin divs:
    div_html = str(div_html).replace('\n','')
    #print div_html
    getmovie(div_html)
def getmovie(html):
  global NUM
  global m_type
  global m_site
  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.dianying
    playlinks = movie_db.playlinks
    #print movies
    for moviein movies:
      #print movie
      NUM +=1
      print"%s : %d" % ("=" *70, NUM)
      values = dict(
        movie_title = movie[1],
        movie_url  = movie[0],
        movie_site   = m_site,
        movie_type   = m_type
        )
      print values
      playlinks.insert(values)
      print"_" *70
      NUM +=1
      print"%s : %d" % ("=" *70, NUM)
  #else:
  #  print"Not Find"
def getmovieinfo(url):
  html = gethtml(url)
  soup = BeautifulSoup(html)
  #pack pack_album album_cover
  divs = 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_info
  else:
    print"Not find movie info"
  return m_info
def insertdb(movieinfo):
  global conn
  movie_db = conn.dianying_at
  movies = movie_db.movies
  movies.insert(movieinfo)
if __name__ =="__main__":
  global conn
  tags_url ="http://v.qq.com/list/1_-1_-1_-1_1_0_0_20_0_-1_0.html"
  #print tags_url
  tags_html = gethtml(tags_url)
  #print tags_html
  tag_urls = gettags(tags_html)
  #print tag_urls
  for urlin tag_urls.items():
    print str(url[1]).encode('utf-8') #,url[0]
    maxpage =int(get_pages(str(url[1]).encode('utf-8')))
    print maxpage
    for xin range(0, maxpage):
      #http://v.qq.com/list/1_0_-1_-1_1_0_0_20_0_-1_0.html
      m_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_url
      movie_html = gethtml(movie_url.encode('utf-8'))
      #print movie_html
      getmovielist(movie_html)
      time.sleep(0.1)

总结

以上所述是小编给大家介绍的使用python实现抓取腾讯视频所有电影的爬虫,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

(0)

相关推荐

  • Python3.4编程实现简单抓取爬虫功能示例

    本文实例讲述了Python3.4编程实现简单抓取爬虫功能.分享给大家供大家参考,具体如下: import urllib.request import urllib.parse import re import urllib.request,urllib.parse,http.cookiejar import time def getHtml(url): cj=http.cookiejar.CookieJar() opener=urllib.request.build_opener(urllib.

  • 基于python实现的抓取腾讯视频所有电影的爬虫

    我搜集了国内10几个电影网站的数据,里面近几十W条记录,用文本没法存,mongodb学习成本非常低,安装.下载.运行起来不会花你5分钟时间. # -*- coding: utf-8 -*- # by awakenjoys. my site: www.dianying.at import re import urllib2 from bs4 import BeautifulSoup import string, time import pymongo NUM = 0 #全局变量,电影数量 m_ty

  • Python抓取框架Scrapy爬虫入门:页面提取

    前言 Scrapy是一个非常好的抓取框架,它不仅提供了一些开箱可用的基础组建,还能够根据自己的需求,进行强大的自定义.本文主要给大家介绍了关于Python抓取框架Scrapy之页面提取的相关内容,分享出来供大家参考学习,下面随着小编来一起学习学习吧. 在开始之前,关于scrapy框架的入门大家可以参考这篇文章:http://www.jb51.net/article/87820.htm 下面创建一个爬虫项目,以图虫网为例抓取图片. 一.内容分析 打开 图虫网,顶部菜单"发现" "

  • Python爬虫实现网页信息抓取功能示例【URL与正则模块】

    本文实例讲述了Python爬虫实现网页信息抓取功能.分享给大家供大家参考,具体如下: 首先实现关于网页解析.读取等操作我们要用到以下几个模块 import urllib import urllib2 import re 我们可以尝试一下用readline方法读某个网站,比如说百度 def test(): f=urllib.urlopen('http://www.baidu.com') while True: firstLine=f.readline() print firstLine 下面我们说

  • Python使用Srapy框架爬虫模拟登陆并抓取知乎内容

    一.Cookie原理 HTTP是无状态的面向连接的协议, 为了保持连接状态, 引入了Cookie机制 Cookie是http消息头中的一种属性,包括: Cookie名字(Name)Cookie的值(Value) Cookie的过期时间(Expires/Max-Age) Cookie作用路径(Path) Cookie所在域名(Domain),使用Cookie进行安全连接(Secure) 前两个参数是Cookie应用的必要条件,另外,还包括Cookie大小(Size,不同浏览器对Cookie个数及大

  • Python开发中爬虫使用代理proxy抓取网页的方法示例

    本文实例讲述了Python开发中爬虫使用代理proxy抓取网页的方法.分享给大家供大家参考,具体如下: 代理类型(proxy):透明代理 匿名代理 混淆代理和高匿代理. 这里写一些python爬虫使用代理的知识, 还有一个代理池的类. 方便大家应对工作中各种复杂的抓取问题. urllib 模块使用代理 urllib/urllib2使用代理比较麻烦, 需要先构建一个ProxyHandler的类, 随后将该类用于构建网页打开的opener的类,再在request中安装该opener. 代理格式是"h

  • Python爬虫包 BeautifulSoup 递归抓取实例详解

    Python爬虫包 BeautifulSoup  递归抓取实例详解 概要: 爬虫的主要目的就是为了沿着网络抓取需要的内容.它们的本质是一种递归的过程.它们首先需要获得网页的内容,然后分析页面内容并找到另一个URL,然后获得这个URL的页面内容,不断重复这一个过程. 让我们以维基百科为一个例子. 我们想要将维基百科中凯文·贝肯词条里所有指向别的词条的链接提取出来. # -*- coding: utf-8 -*- # @Author: HaonanWu # @Date: 2016-12-25 10:

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

    用python实现的抓取腾讯视频所有电影的爬虫 # -*- coding: utf-8 -*- import re import urllib2 from bs4import BeautifulSoup import string, time import pymongo NUM =0 #全局变量,电影数量 m_type = u'' #全局变量,电影类型 m_site = u'qq' #全局变量,电影网站 #根据指定的URL获取网页内容 def gethtml(url): req = urlli

  • Python实现抓取腾讯视频所有电影的示例代码

    目录 运行环境 实现目的与思路 目的 思路 完整代码 视频缓存ts文件 实现效果 运行环境 IDE丨pycharm 版本丨Python3.6 系统丨Windows 实现目的与思路 目的 实现对腾讯视频目标url的解析与下载,由于第三方vip解析,只提供在线观看,隐藏想实现对目标视频的下载 思路 首先拿到想要看的腾讯电影url,通过第三方vip视频解析网站进行解析,通过抓包,模拟浏览器发送正常请求,通过拿到缓存ts文件,下载视频ts文件,最后通过转换为mp4文件,即可实现正常播放 完整代码 imp

  • Python selenium抓取虎牙短视频代码实例

    今天闲着没事,用selenium抓取视频保存到本地,只爬取了第一页,只要小于等于5分钟的视频... 为什么不用requests,没有为什么,就因为有些网站正则和xpath都提取不出来想要的东西,要么就是接口出来的数据加密,要么就因为真正的视频url规律难找! selenium几行代码轻轻松松就搞定! 安装selenium库,设置无界面模式 代码如下: from selenium import webdriver from selenium.webdriver.chrome.options imp

  • Python爬取腾讯视频评论的思路详解

    一.前提条件 安装了Fiddler了(用于抓包分析) 谷歌或火狐浏览器 如果是谷歌浏览器,还需要给谷歌浏览器安装一个SwitchyOmega插件,用于代理服务器 有Python的编译环境,一般选择Python3.0及以上 声明:本次爬取腾讯视频里 <最美公里>纪录片的评论.本次爬取使用的浏览器是谷歌浏览器 二.分析思路 1.分析评论页面 根据上图,我们可以知道:评论使用了Ajax异步刷新技术.这样就不能使用以前分析当前页面找出规律的手段了.因为展示的页面只有部分评论,还有大量的评论没有被刷新出

  • python 爬取腾讯视频评论的实现步骤

    一.网址分析 查阅了网上的大部分资料,大概都是通过抓包获取.但是抓包有点麻烦,尝试了F12,也可以获取到评论.以电视剧<在一起>为例子.评论最底端有个查看更多评论猜测过去应该是 Ajax 的异步加载. 网上的大部分都是构建评论的网址,通过 requests 获取,正则表达式进行数据处理.本文也利用该方法进行数据处理,其实利用 scrapy 会更简单. 根据前辈给出的经验,顺利找到了评论所在的链接. 在新标签中打开,该网址的链接. 评论都在"content":"xx

  • Python实现爬取某站视频弹幕并绘制词云图

    目录 前言 爬取弹幕 爬虫基本思路流程 导入模块 代码 制作词云图 导入模块 读取弹幕数据 前言 [课 题]: Python爬取某站视频弹幕或者腾讯视频弹幕,绘制词云图 [知识点]: 1. 爬虫基本流程 2. 正则 3. requests >>> pip install requests 4. jieba >>> pip install jieba 5. imageio >>> pip install imageio 6. wordcloud  >

  • Python如何抓取天猫商品详细信息及交易记录

    本文实例为大家分享了Python抓取天猫商品详细信息及交易记录的具体代码,供大家参考,具体内容如下 一.搭建Python环境 本帖使用的是Python 2.7 涉及到的模块:spynner, scrapy, bs4, pymmssql 二.要获取的天猫数据 三.数据抓取流程 四.源代码 #coding:utf-8 import spynner from scrapy.selector import Selector from bs4 import BeautifulSoup import ran

  • Python实现爬取腾讯招聘网岗位信息

    目录 介绍 效果展示 实现思路 源码展示 介绍 开发环境 Windows 10 python3.6 开发工具 pycharm 库 numpy.matplotlib.time.xlutils.copy.os.xlwt, xlrd, random 效果展示 代码运行展示 实现思路 1.打开腾讯招聘的网址右击检查进行抓包,进入网址的时候发现有异步渲染,我们要的数据为异步加载 2.构造起始地址: start_url = ‘https://careers.tencent.com/tencentcareer

  • Python正则抓取网易新闻的方法示例

    本文实例讲述了Python正则抓取网易新闻的方法.分享给大家供大家参考,具体如下: 自己写了些关于抓取网易新闻的爬虫,发现其网页源代码与网页的评论根本就对不上,所以,采用了抓包工具得到了其评论的隐藏地址(每个浏览器都有自己的抓包工具,都可以用来分析网站) 如果仔细观察的话就会发现,有一个特殊的,那么这个就是自己想要的了 然后打开链接就可以找到相关的评论内容了.(下图为第一页内容) 接下来就是代码了(也照着大神的改改写写了). #coding=utf-8 import urllib2 import

随机推荐