微信扫码
与创始人交个朋友
我要投稿
任务:网页上的表格内容下载保存为excel表格
在deepseek中输入提示词:
你是一个Python编程专家,写一个网页爬取的脚本,完成任务如下:
在F盘新建一个excel表格文件:Amplifypartnersportfolio.xlsx
打开网页:https://www.amplifypartners.com/portfolio,
定位所有的role="listitem"的div元素,在div元素中定位class="mob-name"的div标签,提取其内容,写入excel表格的第1列;
定位class="copy-wr"的div标签,提取其中<p>标签的文本内容,写入excel表格的第2列;
定位fs-cmsfilter-field="status"的div标签,提取其内容,写入excel表格的第3列;
定位class="mob-link"的div标签,提取其内容,写入excel表格的第4列;
定位第1个class="flex-vertical gap-4"的div标签, 找到所有的<p>标签, 提取每个 <p> 标签中的文本内容,过滤掉不需要的文本:“TEAM”和空字符串,然后写入excel表格的第5列;
定位第2个class="flex-vertical gap-4"的div标签, 找到所有的<p>标签, 提取每个 <p> 标签中的文本内容,过滤掉不需要的文本:“Milestones”和空字符串,然后写入excel表格的第6列;
定位第3个class="flex-vertical gap-4"的div标签, 找到所有的<p>标签, 提取每个 <p> 标签中的文本内容,过滤掉不需要的文本:“Articles”和空字符串,然后写入excel表格的第6列;
注意:每一步都要输出信息到屏幕上
Deepseek给出的Python源代码:
import requests
from bs4 import BeautifulSoup
import openpyxl
# 创建一个新的Excel工作簿
workbook = openpyxl.Workbook()
sheet = workbook.active
sheet.title = "Amplify Partners Portfolio"
# 设置表头
sheet['A1'] = 'Name'
sheet['B1'] = 'Location'
sheet['C1'] = 'Status'
sheet['D1'] = 'Link'
sheet['E1'] = 'Team'
sheet['F1'] = 'Milestones'
sheet['G1'] = 'Articles'
# 获取网页内容
url = 'https://www.amplifypartners.com/portfolio'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
# 定位所有的role="listitem"的div元素
list_items = soup.find_all('div', role='listitem')
row = 2 # 从第二行开始写入数据
for item in list_items:
try:
# 提取class="mob-name"的div标签内容
name_div = item.find('div', class_='mob-name')
name = name_div.text.strip() if name_div else ''
print(f"Extracted Name: {name}")
sheet[f'A{row}'] = name
# 提取class="copy-wr"的div标签中<p>标签的文本内容
location_div = item.find('div', class_='copy-wr')
location = location_div.find('p').text.strip() if location_div and location_div.find('p') else ''
print(f"Extracted Location: {location}")
sheet[f'B{row}'] = location
# 提取fs-cmsfilter-field="status"的div标签内容
status_div = item.find('div', {'fs-cmsfilter-field': 'status'})
status = status_div.text.strip() if status_div else ''
print(f"Extracted Status: {status}")
sheet[f'C{row}'] = status
# 提取class="mob-link"的div标签内容
link_div = item.find('div', class_='mob-link')
link = link_div.text.strip() if link_div else ''
print(f"Extracted Link: {link}")
sheet[f'D{row}'] = link
# 定位第1个class="flex-vertical gap-4"的div标签
team_div = item.find('div', class_='flex-vertical gap-4')
if team_div:
team_members = [p.text.strip() for p in team_div.find_all('p') if p.text.strip() not in ['TEAM', '']]
team_str = ', '.join(team_members)
print(f"Extracted Team: {team_str}")
sheet[f'E{row}'] = team_str
# 定位第2个class="flex-vertical gap-4"的div标签
milestones_div = item.find_all('div', class_='flex-vertical gap-4')[1] if len(item.find_all('div', class_='flex-vertical gap-4')) > 1 else None
if milestones_div:
milestones = [p.text.strip() for p in milestones_div.find_all('p') if p.text.strip() not in ['Milestones', '']]
milestones_str = ', '.join(milestones)
print(f"Extracted Milestones: {milestones_str}")
sheet[f'F{row}'] = milestones_str
# 定位第3个class="flex-vertical gap-4"的div标签
articles_div = item.find_all('div', class_='flex-vertical gap-4')[2] if len(item.find_all('div', class_='flex-vertical gap-4')) > 2 else None
if articles_div:
articles = [p.text.strip() for p in articles_div.find_all('p') if p.text.strip() not in ['Articles', '']]
articles_str = ', '.join(articles)
print(f"Extracted Articles: {articles_str}")
sheet[f'G{row}'] = articles_str
row += 1
except Exception as e:
print(f"Error processing item: {e}")
# 保存Excel文件
workbook.save('F:/Amplifypartnersportfolio.xlsx')
print("Data saved to Amplifypartnersportfolio.xlsx")
创建Excel工作簿: 使用 openpyxl 创建一个新的Excel工作簿,并设置表头。
获取网页内容: 使用 requests 库获取网页内容,并使用 BeautifulSoup 解析HTML。
定位和提取数据: 使用 BeautifulSoup 的 find 和 find_all 方法定位和提取所需的数据。
写入Excel: 将提取的数据写入Excel表格的相应列。
保存Excel文件: 将工作簿保存到指定路径。
运行此脚本后,你将在F盘根目录下找到 Amplifypartnersportfolio.xlsx 文件,其中包含提取的数据。
爬取成功:
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-09-04
2024-10-30
2024-12-25
2024-09-26
2024-09-03
2024-09-06
2024-10-30
2024-11-23
2024-08-18
2024-11-19