| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 本帖最后由 fre 于 2015-8-15 11:00 编辑  
 
一个一个去打开页面 点下载 再连接到百度或者迅雷 很麻烦.. 
于是就写个小爬爬..抓取所有课程的对应下载地址 
 
我想没人会要在迅雷下也在百度下. 
于是设置了个输入提示,1是抓取迅雷 2是抓取百度盘 
 
这这里是抓取好的下载地址...不想下爬虫又需要下载地址的可以直接下 
 
 
效果如图 
 
 
 
 
代码如下 
 
- 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()
 
 
  复制代码 |   
 
评分
- 
查看全部评分
 
 
 
 
 
 |