python爬取新浪新闻
一、这里提前解释说明:
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)
若有疑问 可联系博主进一步探讨python小知识