首页 > 爬虫爬取html5页面上的视频是怎样的一种处理方式的

爬虫爬取html5页面上的视频是怎样的一种处理方式的

以这个为例:http://www.imooc.com/video/10903
在f12时候可以看到这一串信息

<video x-webkit-airplay="allow" webkit-playsinline="" src="http://v2.mukewang.com/82893051-9d99-4746-a835-50056e57826b/H.mp4?auth_key=1458364819-0-0-262a7ce60b83926e262dd5dc9f81e94f"></video>

但在我处理页面的时候都没发现有这链接

这页面需要登入之后才能看,我已经处理了登入程序,可以正常登入,但在用session.get这页面时候,找不到上面的链接信息。

以下是我的代码:

from bs4 import BeautifulSoup
import requests
import configparser
import json
imooc_url = r'http://www.imooc.com'
login_session = requests.session()
headers = {
            "Accept":"application/json, text/javascript, */*; q=0.01",
            "Accept-Encoding":"gzip, deflate",
            "Accept-Language":"zh-CN,zh;q=0.8",
            "Connection":"keep-alive",
            "Host":"www.imooc.com",
            "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36",
            "X-Requested-With":"XMLHttpRequest"
        }


class imoocLogin(object):
    def __init__(self,configfile):
        self.loginurl = r'http://www.imooc.com/passport/user/login'

        config = configparser.ConfigParser()
        config.read(configfile)
        configname = 'imooc'
        self.username = config.get(configname,'username')
        self.password = config.get(configname,'password')


    def startLogin(self):
        login_text = requests.get(imooc_url).text
        login_soup = BeautifulSoup(login_text,'lxml')
        verify = login_soup.find_all('img',class_="verify-img")
        print "verify: %s" %verify
        if verify:
            for verify_data in verify:
                verify_data = verify_data.get('src')
                verify_url = imooc_url+verify_data
                print verify_url
                verify_data = raw_input('input verify:')
                login_data = {
                    "username":self.username,
                    "password":self.password,
                    "remember":'1',
                    "verify":verify_data,
                    "referer":"http://www.imooc.com"
                }
        else:
            login_data = {
                "username":self.username,
                "password":self.password,
                "remember":"1",
                "referer":"http://www.imooc.com"
            }
        print 'ddddddddddddd'
        s_login = login_session.post(self.loginurl,data=login_data,headers=headers)
        print 'wwwwwwwwwwwwww'
        print(s_login)
        print s_login.json()
        print type(s_login.json())

        for k,v in s_login.json().items():
            print k,v
        # print json.dump(s_login.json(),indent=4,sort_keys=True)



if __name__=='__main__':
    abc_url = r'http://www.imooc.com/video/10903'
    user_url = r'http://www.imooc.com/u/1322083/courses'
    loginPro = imoocLogin('config.ini')
    loginPro.startLogin()
    video_url = login_session.get(abc_url,headers=headers).text
    video_soup = BeautifulSoup(video_url,'lxml')
    print video_soup

html5页面上的东西是不是还需要其他的处理的?搞不懂为咋获取不到的。


看了一下,它的video 标签应该是 用js生成的,你只能fetch到他的html 文档流,里面是没有video标签的


这个是通过分析请求得到的,你看看这个是不是你想要的:

发送的请求:

挺简单的,只有一两个参数,应该可以解决你的问题了。(赶紧逃....


https://www.smkuse.info/imooc
做的是一个www.imooc.com课程网络爬虫,获取视频播放信息
代码见:https://www.github.com/kuse16/movie
nodejs实现
先占坑

【热门文章】
【热门文章】