之前因为女友想看八卦,就让gpt写了,把吃瓜网的往期导出成excel
https://www.51cg1.com/archives.html这种没有反扒,网页结构也非常固定,很好弄。如果要更复杂的,比如把每一条导出为pdf,或者网页有访问次数限制,就要设置cookie啥的,会麻烦。
所以说,大佬牛逼
我自己写的python代码在下面
import requests
from bs4 import BeautifulSoup
import pandas as pd
from datetime import datetime
def scrape_to_excel_advanced(url):
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
# 初始化数据收集列表
data = []
# 获取所有的'archive-title' div
archive_titles = soup.find_all('div', class_='archive-title')
for archive in archive_titles:
# 提取年月信息,这是从div的id属性中获取的,形式为'archives-YYYY-MM'
year_month = archive.get('id').replace('archives-', '') # 提取形式为'YYYY-MM'
# 对于每个月份的档案,找到所有文章
articles = archive.find_all('div', class_='brick')
for article in articles:
a_tag = article.find('a')
title = a_tag.text.strip() # 获取标题
link = 'https://www.51cg1.com' + a_tag.get('href') # 拼接完整的URL
day = a_tag.find('span', class_='time').text.strip() # 获取日期中的日
# 修正:直接使用year_month和day拼接,确保格式正确
full_time = f"{year_month}-{day.split('-')[-1]}" # 组合完整的年月日日期
# 将信息添加到数据列表中
data.append({'时间': full_time, '名称': title, '链接': link})
# 使用当前日期生成Excel文件名
now = datetime.now()
excel_file_name = f"{now.year}年{now.month}月{now.day}日更新{len(data)}条.xlsx"
# 创建DataFrame并保存到Excel
df = pd.DataFrame(data)
df.to_excel(excel_file_name, index=False)
print(f'已成功抓取数据并保存到"{excel_file_name}"')
if __name__ == "__main__":
scrape_to_excel_advanced(
url='https://www.51cg1.com/archives.html'
)