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日

相关文章

  • 浅谈Python 集合(set)类型的操作——并交差

    关于Python集合(set)类型的操作,我们涉及到比较常用的三个操作:并集、交集、差集。下面将针对这三个操作进行详细的讲解。 1. 操作一:并集 Python中,集合用{}或set()表示,当我们需要对两个集合进行合并操作时,可以使用并集操作。并集是一种去重后合并的操作,即将两个集合中的所有元素进行合并,并去除其中的重复元素。 示例一: set1 = {1…

    python 2023年5月13日
    00
  • 关于Python中 循环器 itertools的介绍

    关于 Python 中循环器 itertools 的介绍,可以分为以下几点: 1. itertools 简介 itertools 是 Python 中的一个标准模块,包含了很多迭代器生成的工具,可以帮助我们更方便和高效地进行迭代操作。其中包含的几个常用函数有: count(start=0, step=1) :用于创建一个从 start 开始的数列,每次增加 …

    python 2023年6月3日
    00
  • python列表插入append(), extend(), insert()用法详解

    Python列表插入append(),extend(),insert()用法详解 在Python中,列表是一种非常常用的数据类型。在操作列表时,我们经常需要插入新的元素。本攻略将详细介绍Python列表插入的三种方法:append()、extend()和insert()。 append()方法 append()方法用于在列表的末尾添加一个元素。以下是一个示例…

    python 2023年5月13日
    00
  • pandas series序列转化为星期几的实例

    将Pandas Series序列转换为星期几可以使用Pandas库中的dt库和weekday属性来实现。详细攻略如下: 1. 导入Pandas库 在代码开头的地方先导入Pandas库,确保能够使用其相关的功能。 import pandas as pd 2. 生成Pandas Series序列 首先,需要生成一个Pandas Series序列,用于后续的转化。…

    python 2023年6月2日
    00
  • 利用python爬取m3u8格式视频的具体实现

    利用Python爬取M3U8格式视频的具体实现 M3U8是一种基于HTTP Live Streaming(HLS)协议的视频流格式,它将视频分成多个小段,每个小段都是一个独立的TS文件。在实际应用中,我们经常需要从M3U8格式的视频中提取出TS文件,并将它们合并成一个完整的视频文件。以下是利用Python爬取M3U8格式视频的具体实现: 获取M3U8文件 首…

    python 2023年5月14日
    00
  • Python采集热搜数据实现详解

    本攻略将介绍如何使用Python采集热搜数据,以及如何将数据保存到本地文件中。我们将使用requests库来发送HTTP请求,使用BeautifulSoup库来解析HTML页面,以及使用pandas库来处理数据。 实现Python采集热搜数据 以下是一个示例代码,用于实现Python采集热搜数据: import requests from bs4 impor…

    python 2023年5月15日
    00
  • Python 编码规范(Google Python Style Guide)

    Python 编码规范是 Google 编写的用于 Python 代码风格规范化的指南,以下是它的完整攻略: 1. 基本规则 代码采用 4 个空格的缩进方式。 每行代码尽量不要超过 80 个字符,超过时可以使用续行符 \ 来实现换行。 使用 Unix 风格的行尾分隔符 \n,避免使用 Windows 的 \r\n。 文件名必须以 .py 结尾,全部使用小写字…

    python 2023年5月31日
    00
  • Python将多个excel文件合并为一个文件

    下面是一个Python将多个Excel文件合并为一个文件的完整实例教程。 步骤一:安装必要的库 在Python中,我们可以使用pandas库来读取、写入Excel文件,并且可以使用os库来获取文件列表。所以,我们需要先安装这两个库。你可以使用以下命令来安装它们: pip install pandas pip install os 步骤二:创建要合并的Exce…

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