不会写代码 用DeepSeek实现爬虫

admin 2025年2月3日10:28:29评论34 views字数 3750阅读12分30秒阅读模式

本文以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代码如下:

<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
不会写代码 用DeepSeek实现爬虫
可以看到,讲解非常详细。

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

不会写代码 用DeepSeek实现爬虫

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

不会写代码 用DeepSeek实现爬虫

新建对话如下:

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

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

HAPPY TEACHER'S DAY
不会写代码 用DeepSeek实现爬虫
不会写代码 用DeepSeek实现爬虫
效果
不会写代码 用DeepSeek实现爬虫

完整代码

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 NoneNoneNone

   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(1if 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(1if 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可以帮我们生成相关代码。当然,需要我们描述一定要清楚!

原文始发于微信公众号(kali笔记):不会写代码 用DeepSeek实现爬虫

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月3日10:28:29
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   不会写代码 用DeepSeek实现爬虫https://cn-sec.com/archives/3695185.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息