
起因,在吾爱看到了这个站的视频可以在线播放,之前的那个是用正则表达式获取的,我懒就直接用xpath获取了。也是看他用的Flask搭建的,我也没看过flask,然后搜了下基础的使用,以及模版的传参,就小试牛到,代码写的很烂,我自己都觉得烂,福娃凑合看,功能是是实现了。他用的是浏览器地址传参,我用的是input标签传参,他直接用的是获取播放链接,我把海报和基础信息也爬了下来,感觉丑,就搜bootstrap加了个table,看着好点,我主要是做ja后端开发,前端的东西很少碰,弄了一年ja还是菜如狗,谁能理解下,哈哈。大神勿喷,先上成品图。
# encoding=”UFT8″importrequests
importrecords
fromlxml importetree
importxlwt
importre
importsys
fromflask importFlask
fromflask importrequest, render_template, jsonify
app = Flask(__name__, static_folder=’E:\py\爬虫\电影\static’)
app.config[‘JSON_AS_ASCII’] = FalseHEADERS = {
“UserAgent”: “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36”,
“Referer”: “http://www.baiwanzy.com/”}
defgetUrl(url, data):
# name = input(“请输入你要搜索的影视: “) # data[“wd”] = nameresponse = requests.post(url, data, headers=HEADERS)
text = response.text
html = etree.HTML(text)
ifhtml == “”:
return”暂无搜索结果”BASEURL = “http://www.baiwanzy.com”faurl = []
ftext = html.xpath(“//div[@class=’xing_vb’]//span[@class=’xing_vb4′]”)
fort inftext:
titles = t.xpath(“./a/text()”)
fortitle intitles:
passurls = t.xpath(“./a/@href”)
forurl inurls:
passfaurls = {
“biaoti”: title,
“wangzhi”: BASEURL + url
}
faurl.append(faurls)
moviess = song(faurl)
print(faurl)
returnmoviess
defsong(faurl):
movies = []
forurl infaurl:
response = requests.get(url[“wangzhi”], headers=HEADERS)
text = response.text
html = etree.HTML(text)
imagers = html.xpath(“//div[@class=’vodImg’]/img/@src”)
print(“”.join(imagers))
bieming = html.xpath(“//div[@class=’vodinfobox’]//li/text()”)
bies = []
forbie inbieming:
b = bie.strip()
bies.append(b)
info = html.xpath(“//div[@class=’vodinfobox’]//span/text()”)
fos = []
fori ininfo:
fo = i.strip()
fos.append(fo)
mydict = dict(zip(bies, fos))
urlsss = html.xpath(“//div[@style=’paddingleft:10px;wordbreak: breakall; wordwrap:breakword;’]/ul”)[
0].xpath(“./li/text()”)
m3u8s = html.xpath(“//div[@style=’paddingleft:10px;wordbreak: breakall; wordwrap:breakword;’]/ul”)[
1].xpath(“./li/text()”)
m3u8 = []
form inm3u8s:
m3 = m.split(“$”)
m = {
“name”: m3[0],
“url”: m3[1]
}
m3u8.append(m)
yuns = []
foru inurlsss:
yun = u.split(‘$’)
y = {
“name”: yun[0],
“url”: yun[1]
}
yuns.append(y)
move = {
“haibao”: “”.join(imagers),
“info”: mydict,
“yun”: yuns,
“m3u8”: m3u8
}
movies.append(move)
returnmovies
@app.route(‘/’)
defserch():
returnrender_template(“serch.html”)
@app.route(‘/info’)
defmain():
value = request.args.get(‘s’)
url = “http://www.baiwanzy.com/index.php?m=vodsearch”data = {“wd”: value, “submit”: “search”}
s = getUrl(url, data)
if nots:
returnrender_template(“erro.html”)
else:
returnrender_template(“info.html”, s=s)
if__name__ == ‘__main__’:
app.run(host=’0.0.0.0′, port=8080,threaded=True)
html就不粘贴了没啥东西!
页面中取值用的 for{% for i in s %}{{ i.info }}{% endfor %}
2楼:学习一下,python小白。
3楼:这是怎么给作呢???
4楼:说的哪国话??我怎么一句没听懂
5楼:flytoeden 发表于 2018911 15:24
这是怎么给作呢???
这是爬虫源码,需要本地搭建python环境和安装需要用的库。
6楼:誓言伤痕 发表于 2018911 15:37
这是爬虫源码,需要本地搭建python环境和安装需要用的库。
请问下,有些在线视频网站直接爬源代码没有m3u8地址,要用浏览器打开后,才加载出来,这种情况下怎么解决
7楼:wulin2008 发表于 2018911 16:14
请问下,有些在线视频网站直接爬源代码没有m3u8地址,要用浏览器打开后,才加载出来,这种情况下怎么解决
我之前遇到的情况是,播放页面F12的时候,提示DEBUG不能调式,说明这个站有反爬虫机制。而且有的请求是通过js调用不是明文的地址,我也搜过相关的资料,说什么是加密算法,需要解密才能获取到真实的地址,我是个彩币没研究出来。
我的知觉告诉我,我是爬不出来,还有一种是用Selenium+chromedriver模拟浏览器点击,如果跳转之后能播放,应该可以获取到地址栏地址存起来。
8楼:写的确实烂·····
既然是做Ja的,该封装的对象就封装一下啊,可以提取出的公共方法就提取一下啊,Python的爬虫将常用代码提取封装后基本没几行代码的,会写正则基本全部搞定
9楼:最欣赏楼主这种有才的人
10楼:誓言伤痕 发表于 2018911 16:44
我之前遇到的情况是,播放页面F12的时候,提示DEBUG不能调式,说明这个站有反爬虫机制。而且有的请求是通 …
之前我研究过gle的在线视频,比较鸡贼,整个界面设了一堆的弄扰用的临时变量,然后调用一段js,反复加密三四次最终得到获取视频地址的重要参数,然后用js生成hash码+前面获得的参数,拼成请求链接,向服务器获取,由于js全部是加密混淆的,我一直找不到生成hash码的那段js,所以一直没破译成功
11楼:缘来是你 发表于 2018911 20:46
写的确实烂·····
既然是做Ja的,该封装的对象就封装一下啊,可以提取出的公共方法就提取一下啊,Py …
不然也不会这么菜了
12楼:还没入门就放弃了
13楼:站玩不哭 发表于 2018912 09:54
还没入门就放弃了
我也放弃了,脑子笨!
14楼:崇拜ja大佬
15楼:膜拜了大佬
