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