在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/
评论