粤港澳大湾区7大机场新闻数据的评分系统

2023-11-11 09:30

本文主要是介绍粤港澳大湾区7大机场新闻数据的评分系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

粤港澳大湾区7大机场新闻数据的评分系统

# 一、获取网页源代码

# 1.引入所需库

import requests

import re

import time

import csv

# 2.请求头
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}

# 3.需要挖取新闻数据的机场
companys = ['广州白云机场', '深圳宝安机场', '惠州平潭机场', '佛山沙堤机场', '珠海金湾机场', '香港国际机场', '澳门国际机场']

# 4.建立挖取某机场新闻的函数,获得该网页的源代码
def baidu(i,company):
    num = (i-1)*10
    url = 'https://www.baidu.com/s?tn=news&rtt=4&bsst=1&cl=2&wd=' + company + '&medium=0&x_bfe_rqs=03E80&tngroupname=organic_news&newVideo=12&rsv_dl=news_b_pn&pn=' + str(num)
    res = requests.get(url, headers=headers).text

# 二、提取信息并清洗数据

# 1.提取源代码中所需的网址、标题、新闻来源和发布日期的正则表达式
    p_href = '<h3 class="news-title_1YtI1"><a href="(.*?)"'
    href = re.findall(p_href, res, re.S)
    p_title = '<h3 class="news-title_1YtI1"><.*?>(.*?)<!--/s-text--></a></h3>'
    title = re.findall(p_title, res, re.S)
    p_date = '<span class="c-color-gray2 c-font-normal">(.*?)</span>'
    date = re.findall(p_date, res, re.S)
    p_source = '<span class="c-color-gray c-font-normal c-gap-right">(.*?)</span>'
    source = re.findall(p_source, res, re.S)

# 2.清洗标题及发布日期中的干扰信息
    for i in range(len(href)):
        title[i] = title[i].strip()
        title[i] = re.sub('<.*?>', '', title[i])
        date[i] = date[i].split(' ')[0]
        date[i] = re.sub('年', '-', date[i])
        date[i] = re.sub('月', '-', date[i])
        date[i] = re.sub('日', '', date[i])
        if ('小时' in date[i]) or ('分钟' in date[i]):
            date[i] = time.strftime("%Y-%m-%d")
        else:
            date[i] = date[i]

# 三、对新闻标题和新闻正文进行评分

    score = []
    keywords1 = ['正常', '涨停', '增加', '超过', '增大', '通过', '恢复', '涨幅', '优质', '首个', '迈入']
    keywords2 = ['违约', '诉讼', '下降', '阻碍', '空难', '噪音', '扰民', '黑幕']
    for i in range(len(title)):
        num = 0

        # 1.获取新闻正文
        try:
            article = requests.get(href[i], headers=headers, timeout=10).text
        except:
            article = '新闻爬取失败'

        # 2.解决新闻正文中可能出现的乱码问题
        try:
            article = article.encode('ISO-8859-1').decode('utf-8')  # 解码为UTF-8
        except:
            try:
                article = article.encode('ISO-8859-1').decode('gbk')  # 解码为GBK
            except:
                article = article  # 保持本身的编码

        # 3.筛选新闻正文中真正的正文内容,忽略旁边的滚动新闻的内容
        p_article = '<p>(.*?)</p>'
        article_main = re.findall(p_article, article)  # 获取<p>标签里的正文信息,结果是一个列表
        article = ''.join(article_main)  # 将列表转换成为字符串
        for k in keywords1:
            if (k in article) or (k in title[i]):
                num += 5
        score.append(num)
        
        for L in keywords2:
            if (L in article) or (L in title[i]):
                num -= 5
        score.append(num)

# 四、将数据存入csv

# 1. 创建文件对象
    f = open('Airport news data.csv','a',encoding='utf-8')

# 2. 基于文件对象构建 csv写入对象
    csv_writer = csv.writer(f)

# 3. 构建列表头
    csv_writer.writerow(["机场","标题","网址","来源","日期","对新闻标题和内容评分"])
    for i in range(len(title)):
            csv_writer.writerow([company, title[i], href[i], source[i], date[i], score[i]])
    print("yes")

# 4. 关闭文件
    f.close()

#5.获取文章内容
#    l=open('test.csv','a',encoding='utf-8')
#    csv_writer=csv.writer(l)
#    csv_writer.writerow([article])
#    print("ok!")

# 五、批量爬取7个机场每个机场5页共35页百度网的数据并存入csv

for company in companys:
   for i in range(5):
       baidu(i, company)
       print(company + '第' + str(i+1) + "页爬取成功")

最终结果

 

附上所有代码

# ===============================
# 粤港澳大湾区7个机场新闻数据的评分系统
# ===============================
# 一、获取网页源代码
# 1.引入所需库
import requests
import re
import time
import csv# 2.请求头
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}# 3.需要挖取新闻数据的机场
companys = ['广州白云机场', '深圳宝安机场', '惠州平潭机场', '佛山沙堤机场', '珠海金湾机场', '香港国际机场', '澳门国际机场']# 4.建立挖取某机场新闻的函数,获得该网页的源代码
def baidu(i,company):num = (i-1)*10url = 'https://www.baidu.com/s?tn=news&rtt=4&bsst=1&cl=2&wd=' + company + '&medium=0&x_bfe_rqs=03E80&tngroupname=organic_news&newVideo=12&rsv_dl=news_b_pn&pn=' + str(num)res = requests.get(url, headers=headers).text# 二、提取信息并清洗数据
# 1.提取源代码中所需的网址、标题、新闻来源和发布日期的正则表达式p_href = '<h3 class="news-title_1YtI1"><a href="(.*?)"'href = re.findall(p_href, res, re.S)p_title = '<h3 class="news-title_1YtI1"><.*?>(.*?)<!--/s-text--></a></h3>'title = re.findall(p_title, res, re.S)p_date = '<span class="c-color-gray2 c-font-normal">(.*?)</span>'date = re.findall(p_date, res, re.S)p_source = '<span class="c-color-gray c-font-normal c-gap-right">(.*?)</span>'source = re.findall(p_source, res, re.S)# 2.清洗标题及发布日期中的干扰信息for i in range(len(href)):title[i] = title[i].strip()title[i] = re.sub('<.*?>', '', title[i])date[i] = date[i].split(' ')[0]date[i] = re.sub('年', '-', date[i])date[i] = re.sub('月', '-', date[i])date[i] = re.sub('日', '', date[i])if ('小时' in date[i]) or ('分钟' in date[i]):date[i] = time.strftime("%Y-%m-%d")else:date[i] = date[i]# 三、对新闻标题和新闻正文进行评分score = []keywords1 = ['正常', '涨停', '增加', '超过', '增大', '通过', '恢复', '涨幅', '优质', '首个', '迈入']keywords2 = ['违约', '诉讼', '下降', '阻碍', '空难', '噪音', '扰民', '黑幕']for i in range(len(title)):num = 0# 1.获取新闻正文try:article = requests.get(href[i], headers=headers, timeout=10).textexcept:article = '新闻爬取失败'# 2.解决新闻正文中可能出现的乱码问题try:article = article.encode('ISO-8859-1').decode('utf-8')  # 解码为UTF-8except:try:article = article.encode('ISO-8859-1').decode('gbk')  # 解码为GBKexcept:article = article  # 保持本身的编码# 3.筛选新闻正文中真正的正文内容,忽略旁边的滚动新闻的内容p_article = '<p>(.*?)</p>'article_main = re.findall(p_article, article)  # 获取<p>标签里的正文信息,结果是一个列表article = ''.join(article_main)  # 将列表转换成为字符串for k in keywords1:if (k in article) or (k in title[i]):num += 5score.append(num)for L in keywords2:if (L in article) or (L in title[i]):num -= 5score.append(num)# 四、将数据存入csv
# 1. 创建文件对象f = open('Airport news data.csv','a',encoding='utf-8')# 2. 基于文件对象构建 csv写入对象csv_writer = csv.writer(f)# 3. 构建列表头csv_writer.writerow(["机场","标题","网址","来源","日期","对新闻标题和内容评分"])for i in range(len(title)):csv_writer.writerow([company, title[i], href[i], source[i], date[i], score[i]])print("yes")
# 4. 关闭文件f.close()#5.获取文章内容
#    l=open('test.csv','a',encoding='utf-8')
#    csv_writer=csv.writer(l)
#    csv_writer.writerow([article])
#    print("ok!")# 五、批量爬取7个机场每个机场5页共35页百度网的数据并存入csv
for company in companys:for i in range(5):baidu(i, company)print(company + '第' + str(i+1) + "页爬取成功")

 

 

 

 

 

 

 

这篇关于粤港澳大湾区7大机场新闻数据的评分系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/389104

相关文章

Python将大量遥感数据的值缩放指定倍数的方法(推荐)

《Python将大量遥感数据的值缩放指定倍数的方法(推荐)》本文介绍基于Python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处理,并将所得处理后数据保存为新的遥感影像... 本文介绍基于python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

2.1/5.1和7.1声道系统有什么区别? 音频声道的专业知识科普

《2.1/5.1和7.1声道系统有什么区别?音频声道的专业知识科普》当设置环绕声系统时,会遇到2.1、5.1、7.1、7.1.2、9.1等数字,当一遍又一遍地看到它们时,可能想知道它们是什... 想要把智能电视自带的音响升级成专业级的家庭影院系统吗?那么你将面临一个重要的选择——使用 2.1、5.1 还是

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

Oracle数据库使用 listagg去重删除重复数据的方法汇总

《Oracle数据库使用listagg去重删除重复数据的方法汇总》文章介绍了在Oracle数据库中使用LISTAGG和XMLAGG函数进行字符串聚合并去重的方法,包括去重聚合、使用XML解析和CLO... 目录案例表第一种:使用wm_concat() + distinct去重聚合第二种:使用listagg,

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

Python实现将实体类列表数据导出到Excel文件

《Python实现将实体类列表数据导出到Excel文件》在数据处理和报告生成中,将实体类的列表数据导出到Excel文件是一项常见任务,Python提供了多种库来实现这一目标,下面就来跟随小编一起学习一... 目录一、环境准备二、定义实体类三、创建实体类列表四、将实体类列表转换为DataFrame五、导出Da