写一段代码,利用bs4爬取多个网页的div标签,并将其中的数据以字典形式储存到csv中
时间: 2024-12-11 12:43:06 浏览: 7
要使用BeautifulSoup(`bs4`)爬取多个网页的`div`标签并将数据存储为CSV文件,你需要先安装必要的库,如requests、beautifulsoup4和pandas。如果你还没有安装,可以使用以下命令:
```bash
pip install requests beautifulsoup4 pandas
```
然后,你可以编写一个Python脚本来完成这个任务。这里是一个简单的示例,假设你要抓取每个网页上的标题和链接,存储在一个字典中,然后将这些字典写入CSV:
```python
import requests
from bs4 import BeautifulSoup
import csv
# 定义要爬取的URL列表
urls = ['http://example.com/page1', 'http://example.com/page2', 'http://example.com/page3']
# 创建一个空列表来保存字典
data_list = []
# 对于每个URL
for url in urls:
# 发送GET请求
response = requests.get(url)
# 检查是否成功获取页面
if response.status_code == 200:
# 使用BeautifulSoup解析HTML
soup = BeautifulSoup(response.text, 'html.parser')
# 找到所有的div标签并处理它们的内容(例如,如果div有class="title")
divs = soup.find_all('div', class_='title')
for div in divs:
title = div.text.strip() # 提取文本
link = div.find('a')['href'] if div.a else None # 如果有链接提取,否则设为None
# 将结果字典添加到列表中
data_dict = {'Title': title, 'Link': link}
data_list.append(data_dict)
else:
print(f"Failed to fetch {url}, status code: {response.status_code}")
# 将字典列表写入CSV文件
with open('output.csv', mode='w', newline='', encoding='utf-8') as csvfile:
fieldnames = data_list[0].keys()
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader() # 写入表头
writer.writerows(data_list) # 写入所有数据
print("Data has been saved to output.csv")
#
阅读全文