-
使用 selenium 抓取电影数据,磁力链,迅雷下载地址
作者: Azure 发布: 2018-6-19 分类: 开发之路 阅读: 次 查看评论
-
使用 selenium 抓取某电影网站,电影数据,磁力链,迅雷下载地址, 并生成json文件保存。
website = 'https://www.piaohua.com/html/kehuan/2018/0509/33652.html' FILM_TITLE = '' FILM_PICTURE = '' FILM_DESC = [] FILM_MAGNETS = [] FILM_TUNDERS = [] FILM_JSON = {} from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains import json mydriver = webdriver.Chrome('C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe') mydriver.get(website) mydriver.implicitly_wait(5) #标题 title = mydriver.find_element_by_id("show") title = title.find_element_by_css_selector("h3") print(title.text) FILM_TITLE = title.text desc = mydriver.find_element_by_id("showinfo") #链接图片 picture = desc.find_element_by_css_selector('img') print(picture.get_attribute('src')) FILM_PICTURE = picture.get_attribute('src') #剧情介绍 desclist = desc.find_elements_by_css_selector("div") desctext = "" for d in desclist: print(d.text) FILM_DESC.append(d.text) #下载地址(magnet) magnet_link = mydriver.find_elements_by_css_selector('td[style="word-break: break-all; line-height: 18px"]') for l in magnet_link: magnet_link1 = l.find_element_by_css_selector("a") linktext = magnet_link1.get_attribute('href') if linktext[0:6]=='magnet': print(linktext) FILM_MAGNETS.append(linktext) #下载地址迅雷(thunder) thunder_link = mydriver.find_elements_by_css_selector('a[onclick="return OnDownloadClick_Simple(this,2)"]') for l in thunder_link: #ActionChains(mydriver).context_click(l).perform() mydriver.execute_script('ThunderNetwork_SetHref(arguments[0])', l) text = l.get_attribute('href') print(text) FILM_TUNDERS.append(text) FILM_JSON['title'] = FILM_TITLE FILM_JSON['picture'] = FILM_PICTURE FILM_JSON['desc'] = FILM_DESC FILM_JSON['magnets'] = FILM_MAGNETS FILM_JSON['thunders'] = FILM_TUNDERS filename = FILM_TITLE + '.json' file = open(filename, 'w', encoding='utf-8') jj = json.dump(FILM_JSON, file, ensure_ascii=False) file.close() mydriver.close() mydriver.quit()
最后得到的json为
{ "title": "头号玩家HD1280高清", "picture": "http://wx4.sinaimg.cn/mw690/a561b538ly1fr4tij1h9bj20u018g7bx.jpg", "desc": [ "◎片 名 头号玩家 Ready Player One", "◎又 名 玩家一号 / 挑战者1号(港) / 一级玩家(台) / 一号玩家", "◎年 代 2018", "◎国 家 美国", "◎类 型 动作 科幻 冒险 ", "◎语 言 英语", "◎上映日期 2018-03-30(中国大陆) / 2018-03-11(西南偏南电影节) / 2018-03-29(美国)", "◎豆瓣评分 9.2 分 / (总分10分)", "◎豆瓣链接 http://movie.douban.com/subject/4920389/", "◎IMDB http://www.imdb.com/title/tt1677720", "◎时 长 140分钟", "◎导 演 史蒂文·斯皮尔伯格", "◎主 演 泰伊·谢里丹", " 奥利维亚·库克", " 本·门德尔森", " 马克·里朗斯", " 丽娜·维特", " 森崎温", " 菲利普·赵", " 汉娜·乔恩-卡门", " T·J·米勒", " 西蒙·佩吉", " 拉尔夫·尹爱森", " 朱莉娅·尼克森", " 利蒂希娅·赖特", " 阿玛尼·杰克森", " 雅各布·贝特兰德", " ", "◎获奖情况 第4届豆瓣电影年度榜单 最值得期待的外语电影(提名)", " ", "◎简 介", "在2045年,现实世界衰退破败,人们沉迷于VR(虚拟现实)游戏“绿洲(OASIS)”的虚幻世界里寻求慰藉。马克·里朗斯饰演的“绿洲”的创始人临终前宣布,将亿万身家全部留给寻获他隐藏的彩蛋的游戏玩家,史上最大规模的寻宝冒险就此展开,由泰伊·谢里丹饰演的男主角韦德·沃兹(Wade Watts/Parzival)和数十亿竞争者踏上奇妙而又危机重重的旅途。", " ", "◎评 论", "请不要在彩蛋期间插播电影!(普通导演是在电影期间插播广告,二逼导演是在广告期间插播电影,文艺导演是在电影期间插播彩蛋,牛逼导演是在彩蛋期间插播电影) 层出不穷的惊喜和反转,无处不在的彩蛋和致敬。这是导演送给影迷的最好礼物,也是他写给电影的一封情书。片尾无彩蛋,因为电影本身就是彩蛋", "全场喊牛逼!没啥是斯皮尔伯格做不到的了,在一个商业片中把所有的特效情怀和爱结合得完整而彻底,让影迷乐迷游戏迷接二连三地高潮,即使都不是也能看得花枝乱颤,这样应该算是完美了吧。而最后也竟然默默抹了把眼泪…Reality is the only thing that is real.", "每一分钟都是应接不暇的彩蛋,而且确定自己只看懂了一小部分。充分满足了影迷游戏迷科幻迷动漫迷。观影、电影、游戏三个空间的同一感太棒了。某个梗出来的时候简直惊喜得跺脚。现实的部分稍弱,但是不妨碍它妥妥的五星。", "堪比“黑客帝国”的虚拟与现实切换,但没有苦大仇深的哲学思考,而是带着娱乐至死的精神,把影视游戏各种流行文化致敬了个遍。和当初的E.T.一样,童心未泯的斯皮尔伯格不经意就开启了电影的未来。宅男宅女们,欢迎来到VR纪元!(最后还有请勿沉迷的忠告,赞赞赞~)", "老斯这次真是玩炸裂了,一部让游戏迷、科幻迷、影迷、动漫粉、电子乐迷燃爆的年度科幻神作,各种梗和彩蛋不刷个两三遍是看不过来的!!(已二刷,嘻嘻)" ], "magnets": [ "magnet:?xt=urn:btih:6AJPEMUR54QXLADF2ZFQHCJADGOXF2AV", "magnet:?xt=urn:btih:24DZBGNMSKXTWFEXM4LMZNH2V7IV4VDQ" ], "thunders": [ "thunder://QUFmdHA6Ly9oOmhAcGlhb2h1YTY2OC5jb206MTIzMTEvJUU1JUE0JUI0JUU1JThGJUI3JUU3JThFJUE5JUU1JUFFJUI2SEQlRTklOUYlQTklRTclODklODglRTQlQjglQUQlRTUlQUQlOTdbJUU5JUEzJTk4JUU4JThBJUIxd3d3LnBpYW9odWEuY29tXS5tcDRaWg==", "thunder://QUFmdHA6Ly9oOmhAcGlhb2h1YTY2OC5jb206MTIzMTEvJUU1JUE0JUI0JUU1JThGJUI3JUU3JThFJUE5JUU1JUFFJUI2SEQlRTclQkUlOEUlRTclODklODglRTclODklQjklRTYlOTUlODglRTQlQjglQUQlRTglOEIlQjElRTUlOEYlOEMlRTUlQUQlOTdbJUU5JUEzJTk4JUU4JThBJUIxd3d3LnBpYW9odWEuY29tXS5tcDRaWg==" ] }
很有意思的是,此网站对迅雷的下载地址做了一层加密处理,链接里面有 oncontextmenu="ThunderNetwork_SetHref(this)" 表示在鼠标右键此链接时,才把真实的href写到链接里面。
所以需要先模拟执行一下此js语句,再去取href的内容。
mydriver.execute_script('ThunderNetwork_SetHref(arguments[0])', l) text = l.get_attribute('href')
- 控制面板
-
- 网站分类
-
- 搜索
-
- 最新留言
-
- 友情链接
-