4.1 問題
編寫一個get_web.py腳本,實現以下功能:
爬取的網頁爲http://www.tedu.cn
保存的文件名爲/tmp/tedu.html
4.2 方案
導入sys模塊,用sys.argv方法獲取get_web函數實參,讓用戶在命令行上提供http://www.tedu.cn和/tmp/tedu.html兩個參數,調用get_web函數實現如下功能:
1)導入urllib模塊,使用urllib模塊的urlopen函數打開url(即網址),賦值給html
2)以寫方式打開/tmp/tedu.html文件
3)以循環方式:
讀html獲取的數據,保存到data
將data寫入/tmp/tedu.html
4)關閉html
4.3 步驟
實現此案例需要按照如下步驟進行。
步驟一:編寫腳本
[root@localhost day11]# vim get_web.py
#!/usr/bin/env python3
import sys
from urllib.request import urlopen
def get_web(url, fname):
html = urlopen(url) #使用urllib模塊的urlopen函數打開url,賦值給html
with open(fname, 'wb') as fobj:
while True:
data = html.read(4096)
if not data:
break
fobj.write(data)
html.close()
if __name__ == '__main__':
get_web(sys.argv[1], sys.argv[2]) #讓用戶在命令行上提供網址和下載數據保存位置
步驟二:測試腳本執行
[root@localhost day11]# python3 get_web.py http://www.tedu.cn /tmp/tedu.html
[root@localhost day11]# cat /tmp/tedu.html
執行cat命令可以看到/tmp/tedu.html文件中爬取到的內容