sina新闻爬虫案例-详细注释版

1.语言:Python3

2.需要的库:urllib,re(正则)

3.业务:爬取新浪新闻首页所有新闻信息,保存为本地文件

4.代码实现:

import urllib.request#处理并发送请求包
import urllib.error#异常处理
import re#正则表达式
#发送http请求,并获取新浪首页所有信息
data=urllib.request.urlopen("http://news.sina.com.cn/").read()

#确定数据长度
print(len(data))

#数据编码为utf-8,避免出现乱码
data=data.decode("utf-8","ignore")#出现转码异常时忽略

#定义正则表达式,用户筛选首页新闻数据
‘’’查看页面源码,提取统一数据格式:href="https://news.sina.com.cn/c/2019-05-15/doc-ihvhiews1919270.shtml"
‘’’
pat='href="(https://news.sina.com.cn/.*?)"'

#进行正则匹配,筛选有用数据,生成集合
allurl=re.compile(pat).findall(data)

#遍历集合,查看数据是否正常
for i in range(0,len(allurl)):
	print(allurl[i])
	
#确定无异常,表明正则表达式无误,进行数据落地
for i in range(0,len(allurl)):
	#异常处理,避免崩溃
	try:
		print("第"+str(i)+"次爬取")
		#逐个提取url
		thisurl=allurl[i]
		#新建本地空白文件地址,根据脚标自动递增
		file="E:/sinanews/"+str(i)+".html"
		#数据获取并落地,含文件流关闭
		urllib.request.urlretieve(thisurl,file)	
		print("---成功---")
	except urllib.error.URLError as e:
		#URLError 取代 HTTPError处理
		#根据attr是否存在属性,判断后取值
		if hasattr(e,"code"):
			print(e.code)
		if hasattr(e,"reason"):
			print(e.reason)
#打完收工!	

!!!完美!!!!
sina新闻爬虫案例-详细注释版