Python 爬取人民日报文章:自定义时间范围、关键字过滤和下载
以下是一个示例代码,可以爬取人民日报指定时间范围内的文章,并根据关键字过滤和下载相关文章。代码中使用了 requests 库和 BeautifulSoup 库来进行网页爬取和解析。
import requests
from bs4 import BeautifulSoup
import os
from datetime import datetime, timedelta
def crawl_articles(start_date, end_date, keyword):
# 创建保存文章的文件夹
save_path = f'./{start_date}_{end_date}_{keyword}'
os.makedirs(save_path, exist_ok=True)
# 构造日期列表
date_list = []
current_date = start_date
while current_date <= end_date:
date_list.append(current_date)
current_date += timedelta(days=1)
total_articles = 0
correct_articles = 0
# 遍历日期列表
for date in date_list:
# 构造日期对应的URL
url = f'http://paper.people.com.cn/rmrb/html/{date.strftime('%Y-%m/%d')}/nbs.D110000renmrb_01.htm'
# 请求网页内容
response = requests.get(url)
response.encoding = 'utf-8'
html = response.text
# 解析网页内容
soup = BeautifulSoup(html, 'html.parser')
articles = soup.find_all('a')
# 遍历文章链接
for article in articles:
article_url = article.get('href')
if article_url and 'content' in article_url:
# 请求文章内容
article_response = requests.get(article_url)
article_response.encoding = 'utf-8'
article_html = article_response.text
# 解析文章内容
article_soup = BeautifulSoup(article_html, 'html.parser')
article_content = article_soup.find('div', class_='text_c').get_text()
# 判断是否包含关键字
if keyword in article_content:
# 保存文章到文件
with open(f'{save_path}/{total_articles}.txt', 'w', encoding='utf-8') as f:
f.write(article_content)
correct_articles += 1
total_articles += 1
# 计算爬取文章的正确性比率
accuracy = correct_articles / total_articles if total_articles > 0 else 0
return total_articles, accuracy
if __name__ == '__main__':
# 输入开始时间、结束时间和关键字
start_date_str = input('请输入开始时间(格式:YYYY-MM-DD):')
end_date_str = input('请输入结束时间(格式:YYYY-MM-DD):')
keyword = input('请输入关键字:')
# 将时间字符串转换为datetime对象
start_date = datetime.strptime(start_date_str, '%Y-%m-%d').date()
end_date = datetime.strptime(end_date_str, '%Y-%m-%d').date()
# 爬取文章并获取结果
total_articles, accuracy = crawl_articles(start_date, end_date, keyword)
# 输出结果
print(f'爬取文章数量:{total_articles}')
print(f'正确性比率:{accuracy}')
在运行该代码时,会要求输入开始时间、结束时间和关键字。然后,它会爬取人民日报指定时间范围内的文章,并根据关键字过滤和下载相关文章。最后,它会在窗口中显示爬取的文章数量和爬取文章的正确性比率。
原文地址: https://www.cveoy.top/t/topic/qptr 著作权归作者所有。请勿转载和采集!