您现在的位置: 网站首页 / 开发之路 / 正文

使用 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')



« 上一篇下一篇 » 原创文章,转载请注明出处!标签: Selenium  磁力链  迅雷下载  

控制面板
网站分类
搜索
最新留言
友情链接