使用jupyter爬取新闻内容和时间并显示出来
时间: 2024-10-18 07:16:08 浏览: 25
使用Jupyter Notebook爬取新闻内容和时间通常涉及以下几个步骤:
1. **安装所需库**:首先需要安装Python的网络爬虫库如`requests`用于获取网页内容,`BeautifulSoup`处理HTML文档,以及`pandas`用于数据清洗和存储。
```python
!pip install requests beautifulsoup4 pandas
```
2. **导入必要的库**:
```python
import requests
from bs4 import BeautifulSoup
import pandas as pd
from datetime import datetime
```
3. **编写爬虫函数**:
- 获取新闻页面内容:
```python
def get_html(url):
response = requests.get(url)
if response.status_code == 200:
return response.text
else:
print(f"请求失败,状态码:{response.status_code}")
return None
```
- 解析HTML找到新闻信息:
```python
def parse_news(html):
soup = BeautifulSoup(html, 'html.parser')
# 根据目标网站结构定位新闻元素,比如新闻标题、发布时间等
title = soup.find('h2') or soup.find('div', class_='title') # 示例
time_element = soup.find('time', class_='post-time') or soup.find('span', id='post-date') # 示例
return title.text.strip(), datetime.strptime(time_element.text, '%Y-%m-%d %H:%M:%S') # 格式化时间
```
4. **抓取新闻列表**:
- 遍历新闻链接,调用上述两个函数:
```python
news_urls = ['http://example.com/news1', 'http://example.com/news2', ...] # 需要替换为实际的新闻网址
news_data = []
for url in news_urls:
html = get_html(url)
if html is not None:
title, post_time = parse_news(html)
news_data.append((title, post_time))
```
5. **将结果保存到DataFrame**:
```python
df = pd.DataFrame(data=news_data, columns=['新闻标题', '发布日期'])
```
6. **显示结果**:
```python
df.head() # 显示前几条新闻及其时间
df.to_csv('news_data.csv', index=False) # 保存到CSV文件
df.show() # 如果使用JupyterLab,可以使用此命令展示表格
```
记得更换`get_html()`和`parse_news()`中的元素查找路径,因为这取决于目标网站的具体HTML结构。
阅读全文