Python爬虫~已爬取目标网站所有文章,后续如何只获取新文章

MoMo 2023年8月20日19:32:06
评论
32

Python爬虫中,只获取新文章可以通过以下几种方法实现:

1. 时间戳或日期检查

如果目标网站的文章有时间戳或日期标签,你可以记录最后一次爬取时的最新文章的时间戳或日期。在下一次爬取时,只下载那些比这个时间戳或日期更新的文章。

2. 文章ID或URL比较

如果每篇文章都有一个唯一的ID或URL,你可以将已下载的文章的ID或URL保存在一个数据库或文件中。然后,在下一次爬取时,只下载数据库中没有的新文章。

3. 哈希值比较

你也可以为每篇已下载的文章计算一个哈希值,并将这些哈希值存储在一个数据库或文件中。在下一次爬取时,只下载那些哈希值不在数据库中的新文章。

示例代码

以下是一个简单的示例代码,使用文章URL进行比较:

import requests
import json

# 已下载文章的URL列表
with open('downloaded_articles.json', 'r') as f:
    downloaded_articles = json.load(f)

# 获取网站上的文章列表 xpanx.com
# 这里是一个示例,实际代码取决于网站的结构
article_urls = ['https://zhuanlan.zhihu.com/p/647089791', 'https://zhuanlan.zhihu.com/p/647089792']

for article_url in article_urls:
    # 检查文章是否已下载
    if article_url not in downloaded_articles:
        # 下载新文章
        response = requests.get(article_url)
        if response.status_code == 200:
            # 保存新文章(这里只是一个示例,实际保存方式可能不同)
            with open(f'downloaded_articles/{article_url.split("/")[-1]}.html', 'w') as f:
                f.write(response.text)
            print(f"Downloaded new article: {article_url}")
            
            # 将新文章的URL添加到已下载列表中
            downloaded_articles.append(article_url)

# 更新已下载文章的URL列表xpanx.com
with open('downloaded_articles.json', 'w') as f:
    json.dump(downloaded_articles, f)

 

注意: 在运行任何爬虫之前,最好是查看目标网站的robots.txt文件以确保您的操作是允许的。同时,过于频繁的请求可能会导致您的IP地址被封锁。请始终遵守网站的使用条款,并尊重网站的数据使用政策。

 

https://xpanx.com/
MoMo
  • 本文由 发表于 2023年8月20日19:32:06
  • 转载请务必保留本文链接:https://xpanx.com/4155.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: