返回

如何从谷歌新闻中提取特定年份的新闻标题?

python

提取特定年份新闻标题的终极指南

引言

在信息爆炸的时代,获取特定时间段的可靠新闻至关重要。作为全球领先的新闻聚合平台,谷歌新闻提供了丰富的新闻内容,但默认情况下仅显示当前的新闻标题。本文将介绍一种利用 Python 网页抓取技术从谷歌新闻中提取指定年份新闻标题的简便方法。

Python 网页抓取简介

网页抓取是从网络页面中自动提取信息的工艺。借助 Python 的强大库,如 feedparser 和 Pandas,我们可以轻松地解析 RSS 源并提取新闻标题、链接和发布时间。

提取指定年份新闻标题

要解决从谷歌新闻中提取指定年份新闻标题的难题,我们需要修改 RSS URL,以便包含所需的年份参数。以下步骤将指导你完成此过程:

  1. 格式化搜索查询: 将搜索查询(如“外汇汇率新闻”)转换为百分号编码格式(例如,'%20'.join(query.split()))。
  2. 构造 RSS URL: 将格式化的查询与谷歌新闻 RSS 搜索 URL 拼接,如下所示:https://news.google.com/rss/search?q={formatted_query}&hl=en-IN&gl=IN&ceid=IN%3Aen&aq=f&oq=&output=rss。确保将&output=rss添加到 URL 末尾,以获取 RSS 格式的响应。
  3. 处理 RSS 源: 使用 feedparser.parse() 解析 RSS 源并提取标题、链接和发布时间。
  4. 过滤年份: 遍历提取的条目并根据发布时间筛选出所需年份的新闻标题。

代码示例

以下 Python 脚本演示了如何从谷歌新闻中提取指定年份的新闻

import feedparser
import pandas as pd
from datetime import datetime

class GoogleNewsFeedScraper:
    def __init__(self, query, year):
        self.query = query
        self.year = year

    def scrape_google_news_feed(self):
        formatted_query = '%20'.join(self.query.split())
        rss_url = f'https://news.google.com/rss/search?q={formatted_query}&hl=en-IN&gl=IN&ceid=IN%3Aen&aq=f&oq=&output=rss'
        feed = feedparser.parse(rss_url)
        titles = []
        links = []
        pubdates = []

        if feed.entries:
            for entry in feed.entries:
                # Title
                title = entry.title
                titles.append(title)
                # URL link
                link = entry.link
                links.append(link)
                # Date
                pubdate = entry.published
                date_str = str(pubdate)
                date_obj = datetime.strptime(date_str, "%a, %d %b %Y %H:%M:%S %Z")
                formatted_date = date_obj.strftime("%Y-%m-%d")
                pubdates.append(formatted_date)

                # Filter by year
                if int(formatted_date.split("-")[0]) == self.year:
                    titles.append(title)
                    links.append(link)
                    pubdates.append(formatted_date)

        else:
            print("Nothing Found!")

        data = {'URL link': links, 'Title': titles, 'Date': pubdates}
        return data

    def convert_data_to_csv(self):
        d1 = self.scrape_google_news_feed()
        df = pd.DataFrame(d1)
        csv_name = self.query + ".csv"
        csv_name_new = csv_name.replace(" ", "_")
        df.to_csv(csv_name_new, index=False)


if __name__ == "__main__":
    query = 'forex rate news'
    year = 2020
    scraper = GoogleNewsFeedScraper(query, year)
    scraper.convert_data_to_csv()

扩展功能:提取摘要和总结

虽然本文的重点是提取新闻标题,但该脚本可以轻松扩展到包括摘要和总结的提取。通过使用 Newspaper3k 库,你可以轻松地解析新闻文章并提取其文本内容,从而获得新闻文章的摘要或总结。

SEO 优化技巧

为了提高你抓取内容的可见性,请考虑实施以下 SEO 最佳实践:

  • 优化: 识别与目标年份新闻标题相关的相关关键字,并将其包含在文章中。
  • 结构化数据: 使用 Schema.org 微数据标记新闻标题和摘要,以帮助搜索引擎更好地理解你的内容。
  • 社交媒体共享: 在社交媒体平台上分享你抓取的内容,以提高可见性和吸引更多流量。

结论

通过利用 Python 网页抓取技术,你可以轻松地从谷歌新闻中提取指定年份的新闻标题、发表日期和摘要。这对于跟踪历史事件、进行研究或创建定制的新闻聚合服务非常有用。通过本文提供的详细说明和代码示例,你可以立即开始从谷歌新闻中提取有价值的信息。

常见问题解答

问:我如何确定哪些新闻来源是可靠的?
答: 评估来源信誉度的因素包括:知名度、编辑独立性、准确性记录以及第三方审查。

问:提取的新闻内容可以用于商业用途吗?
答: 根据相关版权法和使用条款,在遵守归属要求的情况下,大多数提取的新闻内容可以用于商业用途。

问:网页抓取是否会被谷歌封禁?
答: 只要你遵守使用条款并避免 чрезмерная 抓取,谷歌通常不会封禁网页抓取。

问:我如何处理可能出现的错误或异常?
答: 在处理 RSS 源或提取新闻内容时,对错误和异常进行全面处理,并实施重试机制非常重要。

问:是否有其他技术可以用于从谷歌新闻中提取数据?
答: 除了网页抓取,你还可以探索 Google News API 或 Google Cloud Platform 等替代方案。