python基础教程项目四之新闻聚合

Python基础教程项目四之新闻聚合攻略

1. 项目简介

本项目旨在通过爬取多个新闻网站的新闻,将其进行聚合并形成一个新的新闻列表,便于用户的浏览。可获取的新闻来源包括但不限于新华网、人民网、腾讯新闻等。

2. 实现步骤

2.1 网页分析

首先需要分析新闻网站的网页结构,确定需要爬取的内容和爬取方式,可以使用Chrome的开发者工具或者Firebug进行网页元素的分析。

2.2 爬取网页信息

使用Python的requests、urllib或者Scrapy等模块,通过HTTP请求获取新闻网站的HTML文件,从而得到网页源码。

2.3 解析网页信息

使用Python的BeautifulSoup或者lxml等模块对HTML文件进行解析,从而获取新闻信息。

2.4 存储新闻信息

将获取到的新闻信息存储到数据库或者文件中,方便后续处理和展示。

2.5 展示新闻信息

将存储在数据库或者文件中的新闻信息作为数据源,使用Web框架Flask或者Django进行数据的展示。

3. 示例说明

3.1 人民网新闻聚合

将人民网的新闻信息爬取并存储到MySQL数据库中,然后使用Flask框架展示新闻信息。

import requests
from bs4 import BeautifulSoup
import MySQLdb

# 爬取人民网的新闻信息
def get_news():
    header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
    url = 'http://www.people.com.cn/'
    res = requests.get(url, headers=header)
    soup = BeautifulSoup(res.text, 'html.parser')
    titles = soup.select('div.hdNews > h2 > a')
    news = []
    for title in titles:
        href = title.get('href')
        if href.startswith('http://'):
            news.append((title.text, href))
    return news

# 将新闻信息存储到MySQL数据库中
def save_news_to_database(news):
    db = MySQLdb.connect("localhost", "root", "123456", "test", charset='utf8' )
    cursor = db.cursor()
    for n in news:
        sql = "INSERT INTO news(title, url) VALUES ('%s', '%s')" % (n[0], n[1])
        cursor.execute(sql)
    db.commit()
    db.close()

# 使用Flask框架展示新闻信息
from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
def news():
    db = MySQLdb.connect("localhost", "root", "123456", "test", charset='utf8' )
    cursor = db.cursor()
    sql = "SELECT * FROM news"
    cursor.execute(sql)
    result = cursor.fetchall()
    db.close()

    news = []
    for r in result:
        news.append({'title': r[1], 'url': r[2]})
    return render_template('news.html', news=news)

if __name__ == '__main__':
    news = get_news()
    save_news_to_database(news)
    app.run()

3.2 腾讯新闻聚合

将腾讯新闻的新闻信息爬取并保存到本地文件中,然后使用Django框架展示新闻信息。

import requests
from bs4 import BeautifulSoup
import json

# 爬取腾讯新闻的新闻信息
def get_news():
    header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
    url = 'https://www.qq.com/'
    res = requests.get(url, headers=header)
    soup = BeautifulSoup(res.text, 'html.parser')
    titles = soup.select('div.Q-tpList > ul > li > a')
    news = []
    for title in titles:
        href = title.get('href')
        if href.startswith('http://nba') or href.startswith('http://finance') or href.startswith('http://stock'):
            news.append((title.text, href))
    return news

# 将新闻信息存储到本地文件中
def save_news_to_file(news):
    with open('news.json', 'w', encoding='utf-8') as f:
        json.dump(news, f, ensure_ascii=False)

# 使用Django框架展示新闻信息
from django.shortcuts import render
import json

def news(request):
    with open('news.json', 'r', encoding='utf-8') as f:
        news = json.load(f)

    context = {'news': news}
    return render(request, 'news.html', context=context)

4. 总结

通过以上示例,我们可以看到获取新闻信息的方法有很多,可以根据网页结构和需求进行选择。同时,存储新闻信息的方式也有多种,包括数据库、文件等。最后,使用Web框架进行展示可以实现更好的用户体验。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python基础教程项目四之新闻聚合 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • 在 Robot Framework 中将 python 文件作为关键字运行时遇到问题

    【问题标题】:Trouble running python file as a keyword in Robot Framework在 Robot Framework 中将 python 文件作为关键字运行时遇到问题 【发布时间】:2023-04-02 02:03:01 【问题描述】: 我正在尝试将 python 文件作为机器人框架中的关键字运行。但是,当我…

    Python开发 2023年4月8日
    00
  • Python tkinter的grid布局及Text动态显示方法

    下面是Python tkinter的grid布局及Text动态显示方法的完整攻略: 一、grid布局 1. grid简介 grid()是Tkinter中最有用的布局管理器之一,它将窗口划分为一个网格,根据网格的行和列来放置小部件。这种方式可以让用户更加灵活地控制组件的位置和大小。 2. grid的基本使用方法 在Tkinter中,使用grid进行界面布局的基…

    python 2023年6月13日
    00
  • python3.6实现学生信息管理系统

    Python3.6实现学生信息管理系统 概述 在本文中,我们将介绍如何使用Python3.6编写一个简单的学生信息管理系统。该系统可以进行学生信息的添加、查找、删除和修改等操作。 实现步骤 1. 创建学生信息类 我们首先需要创建一个学生信息类,该类包含学生的姓名、学号、年龄、性别等基本信息。 class Student: def __init__(self,…

    python 2023年5月30日
    00
  • 基于Python实现自动化文档整理工具

    基于Python实现自动化文档整理工具 简介 在项目开发过程中,常常需要整理文档,但手动整理耗时耗力且易出错。因此,本文将介绍一种基于Python实现的自动化文档整理工具。 步骤 安装Python 首先需要安装Python,建议安装最新版本的Python 3。 安装依赖包 需要安装两个第三方依赖包,分别是evalml和pandas,使用pip命令安装即可。 …

    python 2023年5月19日
    00
  • Python基于Google Bard实现交互式聊天机器人

    Python基于Google Bard实现交互式聊天机器人攻略 背景介绍 Google提供了一款名为Bard的自然语言处理API,它可以自动完成问答、语言翻译和语音合成等自然语言处理任务。本攻略将介绍如何使用Python基于Google Bard实现交互式聊天机器人。 环境准备 创建 Google Cloud Platform (GCP) 帐号和项目。 启用…

    python 2023年5月23日
    00
  • 如何在Python中执行量化回归

    若要在Python中执行量化回归,有几个步骤需要遵循。以下是一些标准步骤: 步骤1:导入必要的库 在执行量化回归前,需要导入一些必要的库,比如pandas、numpy、statsmodels等。 import pandas as pd import numpy as np import statsmodels.api as sm 步骤2:收集数据 在此示例中…

    python-answer 2023年3月25日
    00
  • python提取页面内url列表的方法

    在本攻略中,我们将介绍如何使用Python提取页面内的URL列表。我们将提供两个示例,演示如何使用正则表达式和BeautifulSoup库提取URL列表。 步骤1:获取页面内容 在开始之前,我们需要获取目标页面的内容。我们可以使用Python的requests库或者Scrapy框架来获取页面内容。在本攻略中,我们将使用requests库来获取页面内容。 im…

    python 2023年5月15日
    00
  • Python3的正则表达式详解

    Python3的正则表达式详解 正则表达式是一种用于描述字符串模式的语言,它可以用于匹配、查找、替换和割字符串。Python中的re模块供了对正则表达式的支持,可以方便进行字符串的处理。本文将详细讲解Python3中正则表达式的语法和re模块的常用函数以及两个常用的匹配实例。 正则表达式语法 正则表达式由一些特殊字符和普通字符组成,用于字符串模式。下面是一些…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部