![Python数据分析从入门到精通](https://wfqqreader-1252317822.image.myqcloud.com/cover/705/33643705/b_33643705.jpg)
2.4 爬取新闻保存到XML文件并分析特征关系
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/61_04.jpg?sign=1739680670-ANkhfRZwMuA2tibvREXfk169GG3gzeL8-0-c1c18e9cbe2d67d021111c879434afd1)
在本节的内容中,将通过一个具体实例详细讲解使用Python爬取新闻信息并保存到XML文件中的方法,以及使用Stanford CoreNLP提取XML数据特征关系的过程。
2.4.1 爬虫抓取数据
在本项目的“Scrap”目录中提供了多个爬虫文件,每一个文件都可以爬取指定网页的新闻信息,并且都可以将爬取的信息保存到XML文件中。例如通过文件scrap1.py抓取新浪体育某个页面中的新闻信息,并将抓取的信息保存到XML文件news1.xml中。文件scrap1.py的主要实现代码如下所示。
源码路径:daima\2\2-4\pythonCrawler\venv\Scrap\scrap1.py
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/62_01.jpg?sign=1739680670-OZpyVbEehtByAKhMcDkMMbIWR45yyJrn-0-1f8e0ee871fa79969e2fa0c3f9bbafa1)
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/63_01.jpg?sign=1739680670-mtfV17guuuruVYMWzclSZdCS6nBW5kjp-0-7cb30d1d108e8eec26f35a284aa1d2c3)
执行后将抓取的新浪体育的新闻信息保存到XML文件news1.xml中,如图2-6所示。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/63_02.jpg?sign=1739680670-HVI3FSV6CS0WtJfo6g3ohFg02IQzPeDR-0-7a187c17700c53c9620fdb922dc04452)
图2-6 文件news1.xml
2.4.2 使用Stanford CoreNLP提取XML数据的特征关系
Stanford CoreNLP是由斯坦福大学开源的一套Java NLP工具,提供了词性标注(Part-of-Speech tagger)、命名实体识别(Named Entity Recognizer,NER)、情感分析(Sentiment Analysis)等功能。Stanford CoreNLP为Python提供了对应的模块,可通过如下命令安装。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/63_03.jpg?sign=1739680670-ZjnKucWBtpIgnsECxPtpMli6fKxyga1S-0-165d576833091bba4d270f6c28276c97)
因为本项目抓取的是中文信息,所以,还需要在Stanford CoreNLP官网下载专门处理中文的软件包如stanford-chinese-corenlp-2018-10-05-models.jar。
编写文件nlpTest.py调用Stanford CoreNLP分析处理上面抓取到的数据文件news1.xml,提取出数据中的人名、城市和组织等信息,主要实现代码如下所示。
源码路径:daima\2\2-4\pythonCrawler\venv\nlpTest.py
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/63_04.jpg?sign=1739680670-rN54tZNLOazoqAniPRqd0opj7JgPBk6W-0-64d0af030d6df94302b35af6d41c229b)
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/64_01.jpg?sign=1739680670-tCzZmNoqkI8HUM8bywL8wo7s9SqOQ2F1-0-10830d07105c5deab6bbaae9345326a9)
执行后会输出提取分析后的数据:
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/64_02.jpg?sign=1739680670-HNxqIWGXHw0Zlmh6jZTHISv5UvKarE07-0-cba38c4db8ec142dde923380bc60f9a3)