爬虫爬取html5页面上的视频是怎样的一种处理方式的
以这个为例:http://www.imooc.com/video/10903
在f12时候可以看到这一串信息
但在我处理页面的时候都没发现有这链接
这页面需要登入之后才能看,我已经处理了登入程序,可以正常登入,但在用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页面上的东西是不是还需要其他的处理的?搞不懂为咋获取不到的。
相关阅读:
用了ThreadLocal,Connection对象是不是只有一个?
请教前端MVC 可用的框架有哪些? 项目不大,推荐几个比较合适的框架吧
sublime text2 package control安装插件完成后没用,还有sublimeLinter安装出问题
请教各位前辈如何动态扩展代码
html5如何调起手机上的支付宝app?
面向对象里面for in遍历对象属性的问题
vue中怎么使用微博分享按钮组件?
微信:用户点击链接或者图文,会推送给服务端一个事件么?如果有怎么捕获?
jQuery的trigger为什么要绑定在jQueryObject上。
js事件绑定问题
类似于segmentfault之类的通知系统如何设计数据库
Vue组件传递变量的问题
python scrapy初始请求url设置的问题?
libcurl:无法获取某个页面的html源码(需要发送cookie)
用于存放对象的数组,怎么作为参数传递到函数里?
seajs 灵异事件
这种后端框架左边点击,右边加载页面。。是用的什么原理呀
localStorage的命名规则是怎样的?
InteractionManager.setDeadline接口的作用是神马呢?
Chrome对特定的几个文件加载非常之慢?