python爬取新闻数据
时间: 2025-02-20 18:03:07 浏览: 66
### 如何使用 Python 编写网页爬虫抓取新闻网站的数据
编写一个能够从新闻网站上抓取数据的网络爬虫涉及多个方面的工作流程和技术细节。下面将介绍一种利用 `requests` 和 `BeautifulSoup` 这两个常用库实现的方式。
#### 准备工作
为了开始构建这个项目,需要安装必要的第三方库:
```bash
pip install requests beautifulsoup4 openpyxl
```
这些命令会下载并安装所需的软件包,其中 `openpyxl` 是用来操作 Excel 文件的工具[^1]。
#### 发送 HTTP 请求获取页面源码
通过 `requests.get()` 方法向目标网址发送 GET 请求,并接收返回的内容作为响应对象。这里假设要访问的是某个具体的新闻列表页 URL:
```python
import requests
url = 'https://example-news-site.com/latest' # 替换成实际的目标URL
response = requests.get(url)
if response.status_code == 200:
html_content = response.text
else:
raise Exception(f"Failed to load page, status code {response.status_code}")
```
这段代码尝试加载给定链接中的HTML文档;如果服务器成功响应,则继续执行后续逻辑;否则抛出异常提示错误状态码[^2]。
#### 解析 HTML 文档结构
有了完整的HTML字符串之后,就可以借助 BeautifulSoup 来解析其内部结构了。这一步骤主要是定位到包含所需信息的具体标签位置:
```python
from bs4 import BeautifulSoup
soup = BeautifulSoup(html_content, 'html.parser')
news_items = soup.find_all('div', class_='article') # 假设每篇报道都包裹在一个具有特定class属性的<div>里
```
此处定义了一个名为 `news_items` 的变量保存所有匹配的结果集合,即找到的所有文章条目。
#### 提取消息详情
对于每一个单独的文章项来说,可能还需要进一步深入挖掘更多有用字段,比如标题、发布时间、正文摘要等。可以根据实际情况调整选择器路径来准确定位想要提取的部分:
```python
data_list = []
for item in news_items[:5]: # 只选取前五篇文章为例
title = item.h2.a.string.strip() or "No Title"
publish_date = item.span['datetime'] if item.select_one('.date') else None
summary = ''.join([p.text for p in item.select('.summary > p')])
data_dict = {
'Title': title,
'Publish Date': publish_date,
'Summary': summary
}
data_list.append(data_dict)
```
此部分实现了对单个新闻项目的详细内容读取过程,并将其整理成字典形式存入列表中待用。
#### 将结果导出至Excel文件
最后一步就是把收集好的资料汇总起来并通过 Pandas 或者直接调用 OpenPyXL API 导出为表格格式以便查看分析:
```python
import pandas as pd
df = pd.DataFrame(data_list)
output_file_path = './collected_news.xlsx'
df.to_excel(output_file_path, index=False)
print(f'Data has been saved into "{output_file_path}" successfully.')
```
上述脚本完成了整个爬取任务并将最终成果保存到了本地磁盘上的 Excel 表格内。
阅读全文
相关推荐


















