鱼C论坛

 找回密码
 立即注册
查看: 7957|回复: 7

[作品展示] 爬虫抓取鱼C python教程所有下载地址

 关闭 [复制链接]
发表于 2015-8-15 10:54:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 fre 于 2015-8-15 11:00 编辑

一个一个去打开页面 点下载 再连接到百度或者迅雷 很麻烦..
于是就写个小爬爬..抓取所有课程的对应下载地址

我想没人会要在迅雷下也在百度下.
于是设置了个输入提示,1是抓取迅雷 2是抓取百度盘

这这里是抓取好的下载地址...不想下爬虫又需要下载地址的可以直接下
游客,如果您要查看本帖隐藏内容请回复


效果如图

1.png

代码如下
import urllib.request
import re

#打开URL并读取数据返回
def open_url(url):
    req = urllib.request.Request(url)
    req.add_header('User-Agent','Mozilla/5.0 (Windows NT 5.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36')
    html = urllib.request.urlopen(req)
    html = html.read().decode('utf8')
    return html


#从目录页获取每个教程网址
def get_list(html):
    bookdir = re.findall(r'''<h2><a href="(.*)" rel="bookmark"''',html)
    return bookdir

#获取教程名称
def get_name(html):
    name = re.findall(r'''<h2>(.*)?</h2>''',html)
    name = re.sub('–','',name[0])
    return name

#获取迅雷快盘地址
def get_xunlei(html):
    xunlei = re.findall(r'''视频下载地址:<a href="(.*)" target="_blank">迅雷快传</a>''',html)
    try:
        xunlei[0]
    except IndexError:
        html = open_url('http://blog.fishc.com/4015.html/7')
        xunlei = re.findall(r'''视频下载地址:<a href="(.*)" target="_blank">迅雷快传</a>''',html)
    return xunlei[0]

#获取百度网盘地址
def get_baidu(html):
    baidu = re.findall(r'''迅雷快传</a> | <a href="?(.*)?" target="_blank">百度网盘(.*)</a''',html)
    try:
        baidu[1][0]
    except IndexError:
        html = open_url('http://blog.fishc.com/4015.html/7')
        baidu = re.findall(r'''迅雷快传</a> | <a href="?(.*)?" target="_blank">百度网盘(.*)</a''',html)
        
    return baidu


#保存文件
def save_txt(filename,txt):
    print('保存文件')
    with open(filename,'a+',encoding='utf8') as f:
        f.writelines(txt)

#主函数
def get_url():
    url_list = []
    for i in range(1,11):
        url = 'http://blog.fishc.com/category/python/page/%s' % i
        html = open_url(url)
        tuto_list = get_list(html)
        for each in tuto_list:
            url_list.append(each)
        print('正在获取教程网址')
        print(tuto_list)
    temp = input('输入1获取迅雷快盘地址,2获取百度盘地址:')
    for each in url_list:
        html = open_url(each)
        tutoname = get_name(html)
        print(tutoname)
        if temp == '1':
            xunlei = get_xunlei(html)
            txt = tutoname + '\n' + xunlei + '\n\n'
            save_txt('xunlei.txt',txt)
        else:
            baidu = get_baidu(html)
            txt = tutoname + '\n' + baidu[1][0] + baidu[1][1] + '\n\n'
            save_txt('baidu.txt',txt)

    print('抓取完毕!')


if __name__ == '__main__':
    get_url()

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
膜法记者 + 1 + 1 感谢楼主无私奉献!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-16 16:13:48 | 显示全部楼层
喔,这个可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-17 11:20:24 | 显示全部楼层
爬虫抓取鱼C python教程所有下载地址 [
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-17 16:24:53 | 显示全部楼层
fre 发表于 2015-8-15 12:13
其实我还有个百度网盘统一所有教程的下载地址.所有教程文件整合在一起了..不知道发上来合适不...


不合适,鉴于论坛有规定“不能分享鱼C打包资源”,请谅解~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-17 18:00:09 | 显示全部楼层
谢谢楼主的分享。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-17 20:03:45 | 显示全部楼层
新人无比好奇
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-17 21:28:04 | 显示全部楼层
好人啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-18 11:41:45 | 显示全部楼层
好帖子,谢谢楼主
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 08:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表