![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=1738866570-P0zkIBUAtu8fUXZ5FpDBuBRjnXW3VWzY-0-4b76f4e52c9d17275b197055443b370e)
在本节的内容中,将通过一个具体实例详细讲解使用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=1738866570-Av9fjGlGYJqJozSryzxJP0rItUGnwLUG-0-9d78551337bab439cfbf00135bc09fb3)
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/63_01.jpg?sign=1738866570-nPWuR4WG6u1hFf1GMi4Bg6LMk0HDopg7-0-ecdaafc127dca72244e8a410a92c9064)
执行后将抓取的新浪体育的新闻信息保存到XML文件news1.xml中,如图2-6所示。
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/63_02.jpg?sign=1738866570-u5HsWOaGw5TLf81gVrmHYQAdGVjHq4ph-0-43cdad53108a755a802ef6679466052f)
图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=1738866570-5GFRLNcnOU2XVrpMffruNuFndAWfWbXg-0-3aeb6c590925d155915203a1bf75a67d)
因为本项目抓取的是中文信息,所以,还需要在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=1738866570-mBf9D65ZycLMFooHO0lZex3YIvt1Q1n2-0-1fcec91aebf1792ac42f36f0981e9c7d)
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/64_01.jpg?sign=1738866570-IuKMWuiF8wVOE0jobPQTf9jvxWt8vil1-0-2ea36d45e5611687b784032e1d4e1036)
执行后会输出提取分析后的数据:
![](https://epubservercos.yuewen.com/3F131D/17977545801605906/epubprivate/OEBPS/Images/64_02.jpg?sign=1738866570-UZ6ulOLH863Ganqu1s4Cine7fKoefTTL-0-83fc50e420da556fd87b651b2937fd79)