一个网页中有一个很长的表格,要提取其全部内容,还有表格中的所有URL网址。
在kimi中输入提示词:
你是一个Python编程专家,要完成一个编写爬取网页表格内容的Python脚步的任务,具体步骤如下:
在F盘新建一个Excel文件:freeAPI.xlsx
打开网页https://github.com/public-apis/public-apis;
定位table标签;
在table标签内容定位tbody标签;
在tbody标签内定位tr标签;
在tr标签内容定位第1个td标签,提取其文本内容,保存到表格文件freeAPI.xlsx的第1行第1列;
在tr标签内容定位第1个td标签里面的a标签,提取其href属性值,保存到表格文件freeAPI.xlsx的第1行第6列;
在tr标签内容定位第2个td标签,提取其文本内容,保存到表格文件freeAPI.xlsx的第1行第2列;
在tr标签内容定位第3个td标签,提取其文本内容,保存到表格文件freeAPI.xlsx的第1行第3列;
在tr标签内容定位第4个td标签,提取其文本内容,保存到表格文件freeAPI.xlsx的第1行第4列;
在tr标签内容定位第5个td标签,提取其文本内容,保存到表格文件freeAPI.xlsx的第1行第5列;
循环执行以上步骤,直到所有table标签里面内容都提取完;
注意:
每一步相关信息都要输出到屏幕上
源代码:
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 网页URL
url = 'https://github.com/public-apis/public-apis'
# 发送HTTP请求获取网页内容
response = requests.get(url)
web_content = response.text
# 使用BeautifulSoup解析网页
soup = BeautifulSoup(web_content, 'html.parser')
# 定位所有的table标签
tables = soup.find_all('table')
# 检查F盘是否存在freeAPI.xlsx文件,如果不存在则创建
excel_path = 'F:/freeAPI.xlsx'
df_list = [] # 用于存储DataFrame的列表
for table in tables:
# 定位tbody标签
tbody = table.find('tbody')
if tbody:
# 在tbody标签内定位所有的tr标签
rows = tbody.find_all('tr')
for row in rows:
# 在每个tr标签内定位所有的td标签
data = row.find_all('td')
if len(data) >= 5:
# 提取文本内容
extracted_data = [cell.get_text(strip=True) for cell in data[:5]]
# 将提取的数据存储为DataFrame
df = pd.DataFrame([extracted_data], columns=['Column1', 'Column2', 'Column3', 'Column4', 'Column5'])
# 将DataFrame添加到列表中
df_list.append(df)
# 输出相关信息到屏幕
print(f"Extracted data from row: {extracted_data}")
# 将列表中的所有DataFrame合并为一个DataFrame
if df_list:
combined_df = pd.concat(df_list, ignore_index=True)
# 将合并后的DataFrame写入Excel文件
combined_df.to_excel(excel_path, index=False)
print(f"Data has been successfully written to {excel_path}")
else:
print("No data found to write to Excel.")