鱼C论坛

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

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

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

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

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

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

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

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

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


效果如图

1.png

代码如下

  1. import urllib.request
  2. import re

  3. #打开URL并读取数据返回
  4. def open_url(url):
  5.     req = urllib.request.Request(url)
  6.     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')
  7.     html = urllib.request.urlopen(req)
  8.     html = html.read().decode('utf8')
  9.     return html


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

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

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

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


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

  43. #主函数
  44. def get_url():
  45.     url_list = []
  46.     for i in range(1,11):
  47.         url = 'http://blog.fishc.com/category/python/page/%s' % i
  48.         html = open_url(url)
  49.         tuto_list = get_list(html)
  50.         for each in tuto_list:
  51.             url_list.append(each)
  52.         print('正在获取教程网址')
  53.         print(tuto_list)
  54.     temp = input('输入1获取迅雷快盘地址,2获取百度盘地址:')
  55.     for each in url_list:
  56.         html = open_url(each)
  57.         tutoname = get_name(html)
  58.         print(tutoname)
  59.         if temp == '1':
  60.             xunlei = get_xunlei(html)
  61.             txt = tutoname + '\n' + xunlei + '\n\n'
  62.             save_txt('xunlei.txt',txt)
  63.         else:
  64.             baidu = get_baidu(html)
  65.             txt = tutoname + '\n' + baidu[1][0] + baidu[1][1] + '\n\n'
  66.             save_txt('baidu.txt',txt)

  67.     print('抓取完毕!')


  68. if __name__ == '__main__':
  69.     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-4-26 08:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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