一、这里提前解释说明:
urlretrieve(url, filename=None, reporthook=None, data=None)
参数filename指定了保存本地路径(如果参数未指定,urllib会生成一个临时文件保存数据。)
参数reporthook是一个回调函数,当连接上服务器、以及相应的数据块传输完毕时会触发该
回调,我们可以利用这个回调函数来显示当前的下载进度。
参数data指post导服务器的数据,该方法返回一个包含两个元素的(filename, headers)
元组,filename 表示保存到本地的路径,header表示服务器的响应头
1 #爬取新浪新闻
2 import urllib.request
3 import re
4 data=urllib.request.urlopen(“http://news.sina.com.cn/”).read()
5 data2=data.decode(“utf-8”,”ignore”)
6 #"ignore"忽略参数出现的错误
7 pat='href="(http://news.sina.com.cn/.*?)">'
8 allurl=re.compile(pat).findall(data2)
9 for i in range(0,len(allurl)):
10 try:
11 print("第"+str(i)+"次爬取")
12 thisurl=allurl[i]
13 file="F:/python/sinanews"+str(i)+".html"
14 urllib.request.urlretrieve(thisurl,file)
15 print("成功")
16 except urllib.error.URLError as e:
17 if hasattr(e,"code"):
18 print(e.code)
19 if hasattr(e,"reason"):
20 print(e.reason)