|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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()
复制代码 |
评分
-
查看全部评分
|