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小知识

猜你喜欢

转载自www.cnblogs.com/du1269038969/p/9652920.html