首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >不会写代码 用DeepSeek实现爬虫

不会写代码 用DeepSeek实现爬虫

作者头像
逍遥子大表哥
发布2025-07-28 20:06:52
发布2025-07-28 20:06:52
2481
举报
文章被收录于专栏:kali blogkali blog

本文以DeepSeek来实现爬虫。来看看DeepSeek实际能力咋样!

我们以爬取博客为例,为大家演示。

#爬取标题和链接#

利用Python爬取我的博客中的所有文章标题和标题链接。(需要翻页,每一页的规律如下:如第二页为https://blog.bbskali.cn/page/2/第三页为 https://blog.bbskali.cn/page/3/ 第四页为 https://blog.bbskali.cn/page/4/ 以此类推。)博客地址:https://blog.bbskali.cn 将结果保存为csv格式并输出。文章标题html代码如下:

代码语言:javascript
复制
<div class="post_title_wrapper">    <h2 class="m-t-xs text-ellipsis index-post-title text-title"><a href="https://blog.bbskali.cn/4234.html">Homeassistant界面美化</a></h2>
</div>

HAPPY TEACHER'S DAY

可以看到,讲解非常详细。

运行生成的代码,效果如下:

接下来,我们玩点有难度的。爬取每篇文章的阅读量、评论量、和发文时间。

新建对话如下:

#爬取文章阅读量、评论量、#

非常好,上面代码成功爬取了博客的所有标题和链接。接下来,我需要你分别到每篇文章的链接中去,爬取文章的阅读量、评论量、和发文时间。相关html代码如下:

HAPPY TEACHER'S DAY

效果

完整代码

代码语言:javascript
复制
import requests
from bs4 import BeautifulSoup
import csv
import re
import time

def get_post_details(url, headers):
   try:
       response = requests.get(url, headers=headers)
       response.raise_for_status()
   except Exception as e:
       print(f"获取文章详情失败:{url},错误:{str(e)}")
       return None, None, None

   soup = BeautifulSoup(response.text, 'html.parser')
   
   # 解析发文时间
   date_li = soup.find('li', class_='meta-date')
   post_date = date_li.find('time').text.strip() if date_li else ''

   # 解析阅读量
   views_li = soup.find('li', class_='meta-views')
   views = 0
   if views_li:
       views_text = views_li.find('span', class_='meta-value').text
       match = re.search(r'(\d+)', views_text.replace('&nbsp;', ' '))
       views = match.group(1) if match else 0

   # 解析评论量
   comments_li = soup.find('li', class_='meta-comments')
   comments = 0
   if comments_li:
       comments_tag = comments_li.find('a', class_='meta-value') or comments_li.find('span', class_='meta-value')
       if comments_tag:
           match = re.search(r'(\d+)', comments_tag.text)
           comments = match.group(1) if match else 0

   return post_date, views, comments

def get_all_posts():
   base_url = "https://blog.bbskali.cn"
   headers = {
       'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
   }
   
   all_data = []
   page_num = 1
   
   while True:
       # 构造分页URL
       url = f"{base_url}/page/{page_num}/" if page_num > 1 else base_url
       
       try:
           response = requests.get(url, headers=headers)
           response.raise_for_status()
       except Exception as e:
           print(f"停止在第 {page_num} 页,错误:{str(e)}")
           break

       soup = BeautifulSoup(response.text, 'html.parser')
       posts = soup.find_all('div', class_='post_title_wrapper')
       
       if not posts:
           break

       for post in posts:
           h2_tag = post.find('h2', class_='index-post-title')
           if not h2_tag:
               continue

           a_tag = h2_tag.find('a')
           if a_tag and a_tag.has_attr('href'):
               title = a_tag.text.strip()
               link = a_tag['href']
               
               # 获取文章详细信息
               post_date, views, comments = get_post_details(link, headers)
               
               # 收集数据
               all_data.append([
                   title,
                   link,
                   post_date,
                   views,
                   comments
               ])
               # 礼貌性延迟
               time.sleep(0.5)

       print(f"已处理第 {page_num} 页,累计文章数:{len(all_data)}")
       page_num += 1

   # 保存数据
   with open('blog_posts_full.csv', 'w', newline='', encoding='utf-8-sig') as f:
       writer = csv.writer(f)
       writer.writerow(['标题', '链接', '发布日期', '阅读量', '评论数'])
       writer.writerows(all_data)
   
   return len(all_data)

if __name__ == "__main__":
   count = get_all_posts()
   print(f"完整数据已保存到 blog_posts_full.csv,总计 {count} 篇文章")

# 执行示例输出
"""
已处理第 1 页,累计文章数:10
已处理第 2 页,累计文章数:20
...
完整数据已保存到 blog_posts_full.csv,总计 56 篇文章
"""

总结:

利用DeepSeek可以帮我们生成相关代码。当然,需要我们描述一定要清楚!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-02-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 kali笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档