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

2023-11-11 09:30

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

===============================

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

===============================

一、获取网页源代码

1.引入所需库

import requests
import re
import pymysql
import time

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)

四、将数据存入MySQL数据库

for i in range(len(title)):db = pymysql.connect(host='localhost', port=3306, user='root', password='', database='pachong', charset='utf8')cur = db.cursor()sql = 'INSERT INTO article(company,title,href,source,date,score) VALUES (%s,%s,%s,%s,%s,%s)'cur.execute(sql, (company, title[i], href[i], source[i], date[i], score[i]))db.commit()cur.close()db.close()

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

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

最终结果

在这里插入图片描述

附上所有代码

# ===============================
# 粤港澳大湾区7个机场新闻数据的评分系统
# ===============================
# 一、获取网页源代码
# 1.引入所需库
import requests
import re
import pymysql
import time
# 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)# 四、将数据存入MySQL数据库for i in range(len(title)):db = pymysql.connect(host='localhost', port=3306, user='root', password='', database='pachong', charset='utf8')cur = db.cursor()sql = 'INSERT INTO article(company,title,href,source,date,score) VALUES (%s,%s,%s,%s,%s,%s)'cur.execute(sql, (company, title[i], href[i], source[i], date[i], score[i]))db.commit()cur.close()db.close()# 五、批量爬取7个机场每个机场5页共35页百度网的数据并存入MySQL数据库
for company in companys:for i in range(5):baidu(i, company)print(company + '第' + str(i+1) + "页爬取成功")

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



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

相关文章

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

SpringValidation数据校验之约束注解与分组校验方式

《SpringValidation数据校验之约束注解与分组校验方式》本文将深入探讨SpringValidation的核心功能,帮助开发者掌握约束注解的使用技巧和分组校验的高级应用,从而构建更加健壮和可... 目录引言一、Spring Validation基础架构1.1 jsR-380标准与Spring整合1

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

SpringBatch数据写入实现

《SpringBatch数据写入实现》SpringBatch通过ItemWriter接口及其丰富的实现,提供了强大的数据写入能力,本文主要介绍了SpringBatch数据写入实现,具有一定的参考价值,... 目录python引言一、ItemWriter核心概念二、数据库写入实现三、文件写入实现四、多目标写入

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用

Mysql如何将数据按照年月分组的统计

《Mysql如何将数据按照年月分组的统计》:本文主要介绍Mysql如何将数据按照年月分组的统计方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql将数据按照年月分组的统计要的效果方案总结Mysql将数据按照年月分组的统计要的效果方案① 使用 DA

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,