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

2019-06-27 23:51:51 阅读数 407  收藏 更多

分类专栏: python爬虫

前言
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
作者: Python新手学习之家

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

  1. # -*- coding: utf-8 -*-

  2.  

    import re

  3.  

    import urllib2

  4.  

    from bs4 import BeautifulSoup

  5.  

    import string, time

  6.  

    import pymongo

  7.  

  8.  

    NUM = 0 #全局变量,电影数量

  9.  

    m_type = u‘‘ #全局变量,电影类型

  10.  

    m_site = u‘qq‘ #全局变量,电影网站

  11.  

  12.  

    #根据指定的URL获取网页内容

  13.  

    def gethtml(url):

  14.  

    req = urllib2.Request(url)

  15.  

    response = urllib2.urlopen(req)

  16.  

    html = response.read()

  17.  

    return html

  18.  

    ‘‘‘

  19.  

    在学习过程中有什么不懂得可以加我的python学习交流扣扣qun,934109170,群里有不错的学习教程与开发工具。

  20.  

    ‘‘‘

  21.  

  22.  

    #从电影分类列表页面获取电影分类

  23.  

    def gettags(html):

  24.  

    global m_type

  25.  

    soup = BeautifulSoup(html) #过滤出分类内容

  26.  

    #print soup

  27.  

    #<ul class="clearfix _group" gname="mi_type" gtype="1">

  28.  

    tags_all = soup.find_all(‘ul‘, {‘class‘ : ‘clearfix _group‘ , ‘gname‘ : ‘mi_type‘})

  29.  

    #print len(tags_all), tags_all

  30.  

    #print str(tags_all[1]).replace(‘\n‘, ‘‘)

  31.  

  32.  

    #<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>

  33.  

    re_tags = r‘<a _hot=\"tag\.sub\" class=\"_gtag _hotkey\" href=\"(.+?)\" title=\"(.+?)\" tvalue=\"(.+?)\">.+?</a>‘

  34.  

    p = re.compile(re_tags, re.DOTALL)

  35.  

  36.  

    tags = p.findall(str(tags_all[0]))

  37.  

    if tags:

  38.  

    tags_url = {}

  39.  

    #print tags

  40.  

    for tag in tags:

  41.  

    tag_url = tag[0].decode(‘utf-8‘)

  42.  

    #print tag_url

  43.  

    m_type = tag[1].decode(‘utf-8‘)

  44.  

    tags_url[m_type] = tag_url

  45.  

  46.  

    else:

  47.  

    print "Not Find"

  48.  

    return tags_url

  49.  

  50.  

    #获取每个分类的页数

  51.  

    def get_pages(tag_url):

  52.  

    tag_html = gethtml(tag_url)

  53.  

    #div class="paginator

  54.  

    soup = BeautifulSoup(tag_html) #过滤出标记页面的html

  55.  

    #print soup

  56.  

    #<div class="mod_pagenav" id="pager">

  57.  

    div_page = soup.find_all(‘div‘, {‘class‘ : ‘mod_pagenav‘, ‘id‘ : ‘pager‘})

  58.  

    #print div_page #len(div_page), div_page[0]

  59.  

  60.  

    #<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>

  61.  

    re_pages = r‘<a class=.+?><span>(.+?)</span></a>‘

  62.  

    p = re.compile(re_pages, re.DOTALL)

  63.  

    pages = p.findall(str(div_page[0]))

  64.  

    #print pages

  65.  

    if len(pages) > 1:

  66.  

    return pages[-2]

  67.  

    else:

  68.  

    return 1

  69.  

  70.  

  71.  

    def getmovielist(html):

  72.  

    soup = BeautifulSoup(html)

  73.  

  74.  

    #<ul class="mod_list_pic_130">

  75.  

    divs = soup.find_all(‘ul‘, {‘class‘ : ‘mod_list_pic_130‘})

  76.  

    #print divs

  77.  

    for div_html in divs:

  78.  

    div_html = str(div_html).replace(‘\n‘, ‘‘)

  79.  

    #print div_html

  80.  

    getmovie(div_html)

  81.  

  82.  

  83.  

    def getmovie(html):

  84.  

    global NUM

  85.  

    global m_type

  86.  

    global m_site

  87.  

  88.  

    re_movie = r‘<li><a class=\"mod_poster_130\" href=\"(.+?)\" target=\"_blank\" title=\"(.+?)\"><img.+?</li>‘

  89.  

    p = re.compile(re_movie, re.DOTALL)

  90.  

    movies = p.findall(html)

  91.  

    if movies:

  92.  

    conn = pymongo.Connection(‘localhost‘, 27017)

  93.  

    movie_db = conn.dianying

  94.  

    playlinks = movie_db.playlinks

  95.  

    #print movies

  96.  

    for movie in movies:

  97.  

    #print movie

  98.  

    NUM += 1

  99.  

    print "%s : %d" % ("=" * 70, NUM)

  100.  

    values = dict(

  101.  

    movie_title = movie[1],

  102.  

    movie_url = movie[0],

  103.  

    movie_site = m_site,

  104.  

    movie_type = m_type

  105.  

    )

  106.  

    print values

  107.  

    playlinks.insert(values)

  108.  

    print "_" * 70

  109.  

    NUM += 1

  110.  

    print "%s : %d" % ("=" * 70, NUM)

  111.  

  112.  

    #else:

  113.  

    # print "Not Find"

  114.  

  115.  

    def getmovieinfo(url):

  116.  

    html = gethtml(url)

  117.  

    soup = BeautifulSoup(html)

  118.  

  119.  

    #pack pack_album album_cover

  120.  

    divs = soup.find_all(‘div‘, {‘class‘ : ‘pack pack_album album_cover‘})

  121.  

    #print divs[0]

  122.  

  123.  

    #<a href="http://www.tudou.com/albumplay/9NyofXc_lHI/32JqhiKJykI.html" target="new" title="《血滴子》独家纪录片" wl="1"> </a>

  124.  

    re_info = r‘<a href=\"(.+?)\" target=\"new\" title=\"(.+?)\" wl=\".+?\"> </a>‘

  125.  

    p_info = re.compile(re_info, re.DOTALL)

  126.  

    m_info = p_info.findall(str(divs[0]))

  127.  

    if m_info:

  128.  

    return m_info

  129.  

    else:

  130.  

    print "Not find movie info"

  131.  

  132.  

    return m_info

  133.  

  134.  

  135.  

    def insertdb(movieinfo):

  136.  

    global conn

  137.  

    movie_db = conn.dianying_at

  138.  

    movies = movie_db.movies

  139.  

    movies.insert(movieinfo)

  140.  

  141.  

    if __name__ == "__main__":

  142.  

    global conn

  143.  

  144.  

    tags_url = "http://v.qq.com/list/1_-1_-1_-1_1_0_0_20_0_-1_0.html"

  145.  

    #print tags_url

  146.  

    tags_html = gethtml(tags_url)

  147.  

    #print tags_html

  148.  

    tag_urls = gettags(tags_html)

  149.  

    #print tag_urls

  150.  

  151.  

  152.  

    for url in tag_urls.items():

  153.  

    print str(url[1]).encode(‘utf-8‘) #,url[0]

  154.  

    maxpage = int(get_pages(str(url[1]).encode(‘utf-8‘)))

  155.  

    print maxpage

  156.  

  157.  

    for x in range(0, maxpage):

  158.  

    #http://v.qq.com/list/1_0_-1_-1_1_0_0_20_0_-1_0.html

  159.  

    m_url = str(url[1]).replace(‘0_20_0_-1_0.html‘, ‘‘)

  160.  

    movie_url = "%s%d_20_0_-1_0.html" % (m_url, x)

  161.  

    print movie_url

  162.  

    movie_html = gethtml(movie_url.encode(‘utf-8‘))

  163.  

    #print movie_html

  164.  

    getmovielist(movie_html)

  165.  

    time.sleep(0.1)

大工告成,以上代码大家都看明白了没? 如果你看不懂,建议你可以去小编的Python交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目,多练习自然就懂了!

原文地址:https://www.cnblogs.com/chengxuyuanaa/p/12005765.html

时间: 2024-12-27 22:28:02

Python爬虫实现抓取腾讯视频所有电影【实战必学】的相关文章

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

1. [代码]用python实现的抓取腾讯视频所有电影的爬虫    # -*- coding: utf-8 -*-# by awakenjoys. my site: www.dianying.atimport reimport urllib2from bs4 import BeautifulSoupimport string, timeimport pymongo NUM     = 0         #全局变量,电影数量m_type  = u''       #全局变量,电影类型m_site

【Python3 爬虫】16_抓取腾讯视频评论内容

上一节我们已经知道如何使用Fiddler进行抓包分析,那么接下来我们开始完成一个简单的小例子 抓取腾讯视频的评论内容 首先我们打开腾讯视频的官网https://v.qq.com/ 我们打开[电视剧]这一栏,找到一部比较精彩的电视剧爬取一下,例如:我们就爬取[下一站,别离]这部吧 我们找到这部电视剧的评论如下图: 我们看到上图标记部分[查看更多评论] 我们首先在Fiddelr中使用命令clear清除之前浏览的记录 输入命令直接回车即可 接着我们点击[查看更多评论],此时再次看Fiddler,我们可

Python爬虫,抓取淘宝商品评论内容

作为一个资深吃货,网购各种零食是很频繁的,但是能否在浩瀚的商品库中找到合适的东西,就只能参考评论了!今天给大家分享用python做个抓取淘宝商品评论的小爬虫! 思路 我们就拿"德州扒鸡"做为参考目标吧~!如果想抓其他商品的话,自行更换目标即可!打开淘宝,搜索目标,随便点击一个商品进入,在点击累计评论,打开F12开发者工具--网络,先清除现有的所有内容,然后点击下一页评论,在弹出的内容中查找文件中开头为list_detail_rate.htm的html类型,如下图所示 这个html中就含

python爬虫如何抓取代理服务器

一年前突然有个灵感,想搞个强大的网盘搜索引擎,但由于大学本科学习软件工程偏嵌入式方向,web方面的能力有点弱,不会jsp,不懂html,好久没有玩过sql,但就是趁着年轻人的这股不妥协的劲儿,硬是把以前没有学习的全部给学了一遍,现在感觉web原来也就那么回事.好了,废话就不说了,看到本文的读者,可以先看看我做的东西: 去转盘网:www.quzhuanpan.com ok搜搜:www.oksousou.com(这个是磁力,顺便拿出来给大伙观赏) 言归正传,由于我要爬取百度网盘,而度娘你懂的的搞爬虫

Python爬虫实现抓取网页图片

在逛贴吧的时候看见贴吧里面漂亮的图片,或有漂亮妹纸的图片,是不是想保存下来? 但是有的网页的图片比较多,一个个保存下来比较麻烦. 最近在学Python,所以用Python来抓取网页内容还是比较方便的: 所以就尝试了一下 ------code------- #coding=utf-8 import re    import urllib   //导入模块     def gethtml(url):   //自定义函数,传参获取网页内容    page=urllib.urlopen(url)    

python爬虫数据抓取

概要:利用python进行web数据抓取简单方法和实现. 1.python进行网页数据抓取有两种方式:一种是直接依据url链接来拼接使用get方法得到内容,一种是构建post请求改变对应参数来获得web返回的内容. 一.第一种方法通常用来获取静态页面内容,比如豆瓣电影内容分类下动画对应的链接: http://www.douban.com/tag/%E5%8A%A8%E7%94%BB/?focus=movie     纪录片对应的链接: http://www.douban.com/tag/%E7%

Python爬虫:抓取手机APP的数据

摘要: 大多数APP里面返回的是json格式数据,或者一堆加密过的数据 .这里以超级课程表APP为例,抓取超级课程表里用户发的话题. 1.抓取APP数据包 方法详细可以参考这篇博文:http://my.oschina.net/jhao104/blog/605963 得到超级课程表登录的地址:http://120.55.151.61/V2/StudentSkip/loginCheckV4.action 表单: 表单中包括了用户名和密码,当然都是加密过了的,还有一个设备信息,直接post过去就是.

Python爬虫之抓取豆瓣影评数据

脚本功能: 1.访问豆瓣最受欢迎影评页面(http://movie.douban.com/review/best/?start=0),抓取所有影评数据中的标题.作者.影片以及影评信息 2.将抓取的信息写入excel中 页面信息如下: 一共5页,需要循环访问不同的页面 HTML源代码: <a class="" title="<权力的游戏>S5E8:凛冬已至,凡人皆死" href="http://movie.douban.com/review

python爬虫:抓取新浪新闻内容(从当前时间到之前某个时间段),并用jieba分词,用于训练自己的分词模型

新浪新闻内容采用的是ajax动态显示内容,通过抓包,发现如下规律: 每次请求下一页,js那一栏都会出现新的url: "http://api.roll.news.sina.com.cn/zt_list?channel=news&cat_1=gnxw&cat_2==gdxw1" "||=gatxw||=zs-pl||=mtjj&level==1||=2&show_ext=1&show_all=1&show_num=22&ta