Python数据挖掘学习笔记(9)爬取新浪新闻首页的所有新闻

需求:将新浪新闻首页(http://news.sina.com.cn/)所有新闻都爬到本地。
思路:先爬首页,通过正则获取所有新闻链接,然后依次爬各新闻,并存储到本地,如下图。

实现:首先查看新浪新闻网页的源代码:

观察每条新闻的源代码样式,编写以下代码:

import urllib.request
import re
data=urllib.request.urlopen("http://news.sina.com.cn/").read()
data2=data.decode("utf-8")
#pat还有改进的空间
pat='href="(http://news.*?2018-.*?.shtml)"'
allurl=re.compile(pat).findall(data2)
for i in range(0,len(allurl)):
    try:       
        print("第"+str(i)+"次爬取")
        thisurl=allurl[i]
        print(thisurl)
        file="F:/sinanews/"+str(i)+".html"
        urllib.request.urlretrieve(thisurl,file)
        print("-------成功-------")
    except urllib.error.URLError as e:
        if hasattr(e,"code"):
            print(e.code)
        if hasattr(e,"reason"):
            print(e.reason)

感谢韦玮老师的指导

猜你喜欢

转载自blog.csdn.net/Smart3S/article/details/82490951