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

yizhihongxing

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入门篇之面向对象

    Python入门篇之面向对象 面向对象编程(Object-Oriented Programming,OOP)是一种常用的编程范式,它将数据和操作数据的方法封在一起,形成一个对象。在Python中,面向对象编程是一种重要的编程方式,本文将介绍Python中面向编程的基本概念和语法。 类对象 在面向对象编程中,类是一种抽象的数据类型,它定义了一属性和方法。对象是…

    python 2023年5月13日
    00
  • Python接口自动化浅析登录接口测试实战

    Python接口自动化测试是一种自动化测试方法,可以帮助我们更好地测试接口的正确性和稳定性。本文将介绍如何使用Python实现接口自动化测试,并提供一个登录接口测试实战示例。 1. 登录接口测试实战 我们可以使用Python实现登录接口测试。以下是一个示例,演示如何使用Python实现登录接口测试: import requests def test_logi…

    python 2023年5月15日
    00
  • Python如何在列表尾部添加元素

    以下是“Python如何在列表尾部添加元素”的完整攻略。 1. 问题描述 在Python中,有时候需要在列表的尾部添加元素。那么,如何在列表尾部添加元素呢? 2. 解决方案 在Python中,可以使用append()方法在尾部添加元素。示例如下: my_list = [1, , 3,4, 5] my_list.append(6) print(my_list)…

    python 2023年5月13日
    00
  • Python实现对字符串的加密解密方法示例

    Python实现对字符串的加密解密方法示例 为什么需要字符串加密解密? 在信息安全的领域中,我们经常需要使用这些加密算法来保护敏感信息,比如密码、银行账户和其他重要信息。对于这些敏感信息来说,加密就像是外部世界和内部世界之间的一道门,只有门外的人无法进入门内,进入了门内的人才能获取到真正有价值的数据。 Python中的加密模块 Python提供了许多常见的加…

    python 2023年5月20日
    00
  • Python实现按特定格式对文件进行读写的方法示例

    下面我来为你详细讲解“Python实现按特定格式对文件进行读写的方法示例”的完整攻略。 1. 格式化字符串 在Python中,我们可以使用字符串的format()方法来格式化字符串。format()方法使用花括号 {} 来指定要填充的内容,格式为{field_name:format_spec}。其中,field_name 是对应变量的名称,format_sp…

    python 2023年6月5日
    00
  • Python模拟百度登录实例详解

    Python是一种流行的编程语言,它可以用于各种任务,包括Web爬虫。本文将详细讲解如何使用Python模拟百度登录。 安装requests和BeautifulSoup 在使用Python模拟百度登录之前,我们需要先安装requests和BeautifulSoup库。可以使用以下命令来安装它们: pip install requests pip instal…

    python 2023年5月15日
    00
  • Python实现自动回复讨论功能的脚本分享

    我们开始讲解“Python实现自动回复讨论功能的脚本分享”攻略。 什么是自动回复讨论功能 自动回复讨论功能是指当网站用户留言或评论之后,网站可以自动回复用户,并提供相关讨论内容的功能。这个功能可以提高用户体验,也可以让网站更加易用。 实现自动回复讨论功能的脚本 实现自动回复讨论功能的脚本需要用到Python语言和Python第三方模块itchat,reque…

    python 2023年5月19日
    00
  • 使用Python去除字符串中某个字符的多种实现方式比较

    下面我将为你提供使用Python去除字符串中某个字符的多种实现方式比较的完整攻略。 问题描述 有时候在处理字符串时,可能需要去除其中某个字符,例如去除字符串中的空格或者逗号等,那么我们应该如何实现呢? 解决方案 这里介绍两种主流的去除字符的实现方法:使用字符串replace方法和正则表达式。 方法一:使用字符串的replace方法 字符串的replace方法…

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