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日

相关文章

  • pandas 时间格式转换的实现

    下面是关于pandas 时间格式转换的完整攻略: 概述 pandas是一个流行的Python数据分析库,支持处理各种类型的数据。当我们处理带有时间戳的数据时,将时间戳转换为人类可读的日期/时间格式非常重要。pandas提供了许多实用工具用于处理时间序列数据。 实现 1. 将字符串转换为时间戳 有时我们会从文本文件或其他数据源中获取时间戳字符串,需要将它们转换…

    python 2023年6月2日
    00
  • 如何在Windows上安装Numpy

    下面是如何在Windows上安装Numpy的完整攻略: 确认Python已经安装 在安装Numpy之前,需要确认Python已经成功安装在你的Windows系统上。如果你还没有安装Python,可以去官网下载并安装最新版本的Python。 可以在命令行中输入以下命令来检查Python是否安装成功: python –version 如果看到Python的版本…

    python-answer 2023年3月25日
    00
  • 一篇文章带你了解谷歌这些大厂是怎么写 python 代码的

    一篇文章带你了解谷歌这些大厂是怎么写Python代码的 作为一名Python开发者,我们应该如何写出高质量、高效率的Python代码?这就需要我们去了解那些在业界颇有影响力的大厂是怎样写Python代码的。本文将以谷歌为例,带大家了解谷歌这些大厂是怎么写Python代码的。 1. 代码风格 谷歌采用了PEP 8作为Python代码风格的基本规范。PEP 8提…

    python 2023年5月18日
    00
  • PyQt5使用QTimer实现电子时钟

    下面我将详细介绍“PyQt5使用QTimer实现电子时钟”的攻略。 步骤 首先,我们需要导入PyQt5中的QTimer模块,以便使用其中的计时器函数。 from PyQt5.QtCore import QTimer 然后,我们需要在界面中添加一个label组件,以便用来显示电子时钟的时间。这里设置label的文本居中对齐,并设置字体大小和颜色。 self.l…

    python 2023年6月3日
    00
  • 浅谈python元素如何去重,去重后如何保持原来元素的顺序不变

    下面详细讲解关于“浅谈python元素如何去重,去重后如何保持原来元素的顺序不变”的攻略。 为什么需要去重? 在实际的编程过程中,有时我们需要从序列列表、文本中等获取数据,然而这些数据中可能会存在重复的元素,如果不对这些元素进行去重,会导致后续的数据分析和处理出现问题,因此去重就显得非常重要。 python去重的方式 python有多种去重方式,下面介绍几种…

    python 2023年5月14日
    00
  • Python实现购物程序思路及代码

    下面我将为你详细讲解如何使用Python实现购物程序,并提供一些示例代码以便更好地理解。 步骤一:准备数据 在实现购物程序之前,我们需要准备一些数据。在这个例子中,我们可以考虑使用一个字典来存储商品信息,其中键表示商品编号,值则为商品名称和价格。例如: products = { "1001": {"name": &qu…

    python 2023年5月31日
    00
  • python中leastsq函数的使用方法

    下面详细讲解一下“python中leastsq函数的使用方法”。 什么是leastsq函数 leastsq函数是Python中SciPy库中的优化函数之一,用于非线性数据拟合。其全称是“Least Square”,中文意思是“最小二乘法”,可以用于寻找数据中的最佳拟合线或曲线。 leastsq函数的使用方法 leastsq函数的基本格式如下: leastsq…

    python 2023年6月5日
    00
  • Python函数式编程指南(三):迭代器详解

    下面是“Python函数式编程指南(三):迭代器详解”的完整攻略。 什么是迭代器 迭代器是 Python 中的一个重要概念,所谓迭代器,就是一个可以同时迭代多个元素的对象,通过 next() 方法获取每个元素,并在元素全部返回后抛出 StopIteration 异常。迭代器可以用于遍历一个序列、树形结构或其他类型的数据集合。 创建迭代器 在 Python 中…

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