澳门太陽城集团登录网址直达指标就能够

前言:因为本身依然python世界的一名小学生,还会有众多路要走,所以本文以指标为开端,达到指标就能够,对于那个本人要好都没弄懂的法规,不做去做过多解释,避防误人子弟,大家可以网络检索。

友情提醒:本代码用到的网站仅供调换学习使用,如有不妥,请联系删除。

背景:温馨有台微型Computer要给阿爹用,老爷子喜欢看一些大片,不过家里网络意况倒霉,就想批量下载一些存到Computer里。但是当前超越四分之一的网址都是那样的,

澳门太阳集团城网址 1

亟需叁个个地方进去,技巧看到下载地址

澳门太阳集团城网址 2

假诺作者要下载100部电影,那自然手都要点断了,于是便想把那个地点给爬抽出来,迅雷批量下载。

工具:python(版本3.x)

爬虫原理:澳门太陽城集团登录网址,网页源代码中含有下载地址,把这个碎片的地址批量保留到文件中,方便使用。

干货:率先上代码,迫在眉睫的你能够先运营一下,再看详细介绍。

import requests
import re

#changepage用来产生不同页数的链接
def changepage(url,total_page):
    page_group = ['https://www.dygod.net/html/gndy/jddy/index.html']
    for i in range(2,total_page+1):
        link = re.sub('jddy/index','jddy/index_'+str(i),url,re.S)
        page_group.append(link)
    return page_group
#pagelink用来产生页面内的视频链接页面
def pagelink(url):
    base_url = 'https://www.dygod.net/html/gndy/jddy/'
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'}
    req = requests.get(url , headers = headers)
    req.encoding = 'gbk'#指定编码,否则会乱码
    pat = re.compile('<a href="/html/gndy/jddy/(.*?)" class="ulink" title=(.*?)/a>',re.S)#获取电影列表网址
    reslist = re.findall(pat, req.text)

    finalurl = []
    for i in range(1,25):
        xurl = reslist[i][0]
        finalurl.append(base_url + xurl)
    return finalurl #返回该页面内所有的视频网页地址

#getdownurl获取页面的视频地址
def getdownurl(url):
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'}
    req = requests.get(url , headers = headers)
    req.encoding = 'gbk'#指定编码,否则会乱码
    pat = re.compile('<a href="ftp(.*?)">ftp',re.S)#获取下载地址
    reslist = re.findall(pat, req.text)
    furl = 'ftp'+reslist[0]
    return furl


if __name__ == "__main__" :
    html = "https://www.dygod.net/html/gndy/jddy/index.html"
    print('你即将爬取的网站是:https://www.dygod.net/html/gndy/jddy/index.html')
    pages = input('请输入需要爬取的页数:')
    p1 = changepage(html,int(pages))
    with open ('电影天堂下载地址.lst','w') as f :
        j = 0
        for p1i in p1 :
            j = j + 1
            print('正在爬取第%d页,网址是 %s ...'%(j,p1i))
            p2 = pagelink(p1i)
            for p2i in p2 :
                p3 = getdownurl(p2i)
                if len(p3) == 0 :
                    pass
                else :
                    finalurl = p3
                    f.write(finalurl + '\n')
    print('所有页面地址爬取完毕!')

澳门太阳集团城网址,着力模块**getdownurl函数:澳门太陽城集团登录网址直达指标就能够。*澳门太陽城集团登录网址直达指标就能够。*通过requests来赢得页面音讯,能够认为那一个消息的text正是页面源代码(大致任何一款浏览器右键都有翻动网页源代码的采纳),再通过re.compile正则表明式相配的主意来协作到网页源代码中的网站部分,能够看下图

澳门太阳集团城网址 3

 

 那有个别怎么提取呢?通过正则表明式相称。怎么写那么些正则表明式呢?这里用到贰个简易严酷的方法:

<a
href=”ftp(.*?)”>ftp

爬虫中常常用到.*澳门太陽城集团登录网址直达指标就能够。?来做非贪婪相配(专门的学问名词请百度),你能够简轻松单认为那么些(.*?)就代表你想要爬抽出来的事物,那样的东西在每一种网页源码中都以夹在<a
href=”ftp和”>ftp之间的。有人大概会问,那这一个相称出来的不是网站啊,比如上海图书馆中出来的就是://d:d@dygodj8.com:12311/[澳门太陽城集团登录网址直达指标就能够。澳门太陽城集团登录网址直达指标就能够。影片天堂www.dy2018.com]请以你的名字呼唤小编BD中国和英国双字.mp5,前面少了个ftp啊?

科学,不过那是蓄意为之,假若正则表明式写成<a
href=”(.*?)”>ftp,恐怕夹在<a
href=”和”>ftp之间的事物就太多了,二遍拍卖的工本还不比先用你以为最快最直接的方法抽出有用信息,然后再开展拼接来得快。

 

代码详解:

澳门太陽城集团登录网址直达指标就能够。一、getdownurl

#getdownurl获取页面的视频地址
def getdownurl(url):
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'}
    req = requests.get(url , headers = headers)
    req.encoding = 'gbk'#指定编码,否则会乱码
    pat = re.compile('<a href="ftp(.*?)">ftp',re.S)#获取下载地址
    reslist = re.findall(pat, req.text)
    furl = 'ftp'+reslist[0]
    return furl

内部headers是用来将你的台本访谈网站伪装成浏览器访谈,避防有个别网址进行了反爬虫的格局。那几个headers在大多浏览器中也能够很轻松获取,以Firefox为例,直接F12或查看成分,在互连网标签,左边的新闻头中右下角就能够看到。

澳门太阳集团城网址 4

requests模块:requests.get(url , headers = headers)是用伪装成firefox的形式获取该网页的信息。
re模块:可以参考python正则表达式的一些东西,这里用re.complile来写出匹配的模式,re.findall根据模式在网页源代码中找到相应的东西。
二、pagelink

#pagelink用来产生页面内的视频链接页面
def pagelink(url):
    base_url = 'https://www.dygod.net/html/gndy/jddy/'
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'}
    req = requests.get(url , headers = headers)
    req.encoding = 'gbk'#指定编码,否则会乱码
    pat = re.compile('<a href="/html/gndy/jddy/(.*?)" class="ulink" title=(.*?)/a>',re.S)#获取电影列表网址
    reslist = re.findall(pat, req.text)

    finalurl = []
    for i in range(1,25):
        xurl = reslist[i][0]
        finalurl.append(base_url + xurl)
    return finalurl #返回该页面内所有的视频网页地址

率先步getdownurl是用来爬取三个网页的网站,这一步用于获取同一页面内具有网页的网站,像上边包车型地铁网页包罗众多电影链接

澳门太阳集团城网址 5

源码是如此的:

澳门太阳集团城网址 6

通晓的你一看就领悟要求什么样新闻,那么些页面正文有23个电影链接,笔者这里用到三个list来贮存那个网站,其实range(1,25)不分包25,也正是说作者只贮存了贰12个网站,原因是本人的正则表明式写的不得了,爬出来的率先个网站十分,假如风趣味能够商讨下怎么完美。

内需一提的是其一正则表达式用到了两处.*?,所以相配到的reslist是二维的。

三、changepage

#changepage用来产生不同页数的链接
def changepage(url,total_page):
    page_group = ['https://www.dygod.net/html/gndy/jddy/index.html']
    for i in range(2,total_page+1):
        link = re.sub('jddy/index','jddy/index_'+str(i),url,re.S)
        page_group.append(link)
    return page_group

这里也相比简单,点击下一页,抬头看看网站栏的网站是什么样,这里是index/index_2/index_3…很轻易拼接

澳门太阳集团城网址 7

四、main

if __name__ == "__main__" :
    html = "https://www.dygod.net/html/gndy/jddy/index.html"
    print('你即将爬取的网站是:https://www.dygod.net/html/gndy/jddy/index.html')
    pages = input('请输入需要爬取的页数:')
    p1 = changepage(html,int(pages))
    with open ('电影天堂下载地址.lst','w') as f :
        j = 0
        for p1i in p1 :
            j = j + 1
            print('正在爬取第%d页,网址是 %s ...'%(j,p1i))
            p2 = pagelink(p1i)
            for p2i in p2 :
                p3 = getdownurl(p2i)
                if len(p3) == 0 :
                    pass
                else :
                    finalurl = p3
                    f.write(finalurl + '\n')
    print('所有页面地址爬取完毕!')

main里面差不离没什么好说的,反正就是循环读取,再往文件里写进行了。

五、运维及结果

澳门太阳集团城网址 8

澳门太阳集团城网址 9

下一场迅雷就足以向来导入了。(后缀为downlist或lst迅雷能够直接导入)

后记:多少大概会感觉那样一股脑的把电影都下载下来,恐怕有个别电影太烂,下载下来就是浪费时间和能源,而手工业筛选又太劳顿,后续会经过数据库的情势来囤积影片的音讯,进而筛选出须要的地点。

 

You may also like...

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图