爬取5000数据写入csv
时间: 2025-03-26 20:09:18 浏览: 48
### 使用 Python 爬虫抓取 5000 条网页数据并写入 CSV 文件
为了实现这一目标,需要构建一个完整的爬虫程序,该程序能够高效地获取所需数量的数据并将这些数据保存至 CSV 文件中。以下是具体的方法:
#### 准备工作
确保安装必要的库:
```bash
pip install requests pandas openpyxl lxml
```
#### 编写爬虫脚本
编写一个简单的爬虫框架用于请求页面和解析 HTML 数据。
```python
import requests
from bs4 import BeautifulSoup
import time
import random
import pandas as pd
def fetch_page(url, headers=None):
"""发送 HTTP 请求"""
response = requests.get(url=url, headers=headers)
if response.status_code == 200:
return response.text
else:
raise Exception(f"Failed to load page {url}, status code: {response.status_code}")
def parse_html(html_content):
"""解析HTML文档"""
soup = BeautifulSoup(html_content, 'lxml')
items = []
# 假设每页有多个item元素,这里仅作示意处理
for item in soup.select('.job-item'):
title = item.find('h3').get_text(strip=True)
company = item.find(class_='company-name').get_text(strip=True)
salary = item.find(class_='salary').get_text(strip=True)
items.append({
"title": title,
"company": company,
"salary": salary
})
return items
def save_to_csv(data_list, filename='data.csv'):
"""将列表中的字典形式的数据保存成CSV文件"""
df = pd.DataFrame(data=data_list)
df.to_csv(filename, index=False, encoding="utf_8_sig")
if __name__ == "__main__":
base_url = "https://example.com/jobs?page={}"
all_items = []
try:
current_count = 0
while True:
url = base_url.format((current_count // 15) + 1) # 每页显示15条记录
html = fetch_page(url)
new_items = parse_html(html)
if not new_items or len(all_items) >= 5000:
break
all_items.extend(new_items)
current_count += len(new_items)
print(f"Fetched {len(all_items)} records so far.")
sleep_time = round(random.uniform(0.5, 1.5), 2)
time.sleep(sleep_time) # 防止被封IP
except KeyboardInterrupt:
pass
finally:
save_to_csv(all_items[:5000]) # 只保留前5000条有效数据
```
此代码片段展示了如何通过 `requests` 库发起网络请求,并利用 `BeautifulSoup` 解析返回的内容;同时使用了 `pandas` 将收集到的信息转换为 DataFrame 并最终导出为 CSV 文件[^1]。
注意,在实际应用过程中可能还需要考虑更多细节问题,例如异常情况下的重试机制、更复杂的反爬策略应对措施以及更加精细的数据清洗逻辑等。
阅读全文
相关推荐
















