import csv from bs4 import BeautifulSoup import requests headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.6261.95 Safari/537.36" } # 设置请求头,模拟用户 url = "https://blog.csdn.net/u010163987?type=blog" # 爬取的网址 result_list = [] # 循环爬取每一页,虽然我的博客的文章列表只有三页,但是可以设置多循环,防止未爬取到 response = requests.get(f'{url}', headers=headers) response.encoding = response.apparent_encoding # 设置页面编码 content = response.content # 获取页面内容 soup = BeautifulSoup(content, 'html.parser') # 解析 article_list = soup.find('article', class_='blog-list-box') # 获取到文章列表 print(article_list) result_list = [] # 确保result_list在使用前已初始化 for article in article_list.find_all('div', class_='list-box-cont'): result = {} blog_box = article.find_parent('article', class_='blog-list-box') # 找到父级的article元素 if blog_box: title_href = blog_box.find('a') # 在article中查找标签 if title_href and 'href' in title_href.attrs: # 检查标签是否存在并且有href属性 result['href'] = title_href['href'] # 文章链接 else: result['href'] = None # 如果没有找到href,设置为None else: result['href'] = None # 如果没有找到article,设置为None # 获取文章标题 title_div = article.find('div', class_='blog-list-box-top') if title_div: result['name'] = title_div.text.strip() # 文章标题 else: result['name'] = None # 或者根据需求设置一个默认值 result_list.append(result) # 将每篇文章的信息添加到列表中 print(result_list) # with open('csdn_paqu.csv', 'w', encoding='utf-8') as f: # write = csv.DictWriter(f, fieldnames=[ 'href', 'name']) # 写入CSV文件 # write.writeheader() # 写入列名 # write.writerows(result_list) # 将包含字典的列表全部写入到CSV文件中