re库提取新闻数据 【题干】 下载新闻页面,提取新闻数据提取新闻id标题分类发布时间各段落文字另存为 【id】.txt 并下载新闻图片(有几个下载几个)另存在newslmages文件夹中 做好图片名称管理Python简单代码
时间: 2024-12-12 22:23:46 浏览: 19
在Python中,你可以使用`requests`, `BeautifulSoup`以及`re`等库来抓取网页内容,然后提取新闻数据。以下是一个简单的示例,用于下载新闻页面、提取相关信息,并保存到文本和图片文件中:
```python
import requests
from bs4 import BeautifulSoup
import os
import re
# 定义函数,获取并处理新闻页面
def fetch_and_parse_news(url):
# 发送请求
response = requests.get(url)
response.raise_for_status() # 检查请求状态码是否为200
# 解析HTML
soup = BeautifulSoup(response.text, 'html.parser')
# 提取新闻信息
news_id = None # 通常在页面URL中能找到ID,这里假设没有直接提供
title = soup.find('h1', class_='news-title').text.strip()
category = soup.find('div', class_='news-category').text.strip()
pub_date = soup.find('time')['datetime']
paragraphs = [p.text for p in soup.find_all('p')]
# 创建文件名
filename = f'{news_id or "unknown"}_title_{title}.txt'
# 写入文本文件
with open(filename, 'w', encoding='utf-8') as f:
f.write(f"News ID: {news_id}\nTitle: {title}\nCategory: {category}\nPublication Date: {pub_date}\n\n")
f.writelines(paragraphs)
# 图片处理(这需要找到图片链接)
images = soup.select('img')
image_links = [img['src'] for img in images]
if len(image_links) > 0:
save_images(image_links, 'newslmages', filename.replace('.txt', ''))
# 保存图片到指定目录
def save_images(links, folder, prefix):
if not os.path.exists(folder):
os.makedirs(folder)
for i, link in enumerate(links):
response = requests.get(link, stream=True)
if response.status_code == 200:
filename = f"{prefix}_{i+1}.jpg" # 这里假设图片都是.jpg格式,如果不是则需要调整
with open(os.path.join(folder, filename), 'wb') as f:
for chunk in response.iter_content(chunk_size=1024):
f.write(chunk)
# 主程序
url_to_crawl = 'http://example.com/news-page' # 替换为实际的新闻页面URL
fetch_and_parse_news(url_to_crawl)
阅读全文