明确第一个任务——数据源获取

虽然起初被安排的任务是后端,不过队友觉得他的后端熟练度会更高一些,而我正好也在学习爬虫相关内容于是便决定将我最近的第一个任务改为爬取原始数据。所以本篇博客的内容就在于数据源初步获取的探索学习。

环境配置

虽然说爬虫语言几乎没有限制,但从便捷角度看显然python是更适合的,于是我先后做了以下工作:

  1. python全面换新 ,为了方便后续包管理环境,将原先常用的 Python embedded 版本(嵌入式版)嵌入式分发版(pythoncore-3.14-64) 卸载并从python官网上下载 python3.14Windows Installer (64-bit)
  2. 查看 Scripts子文件所在位置并将pip添加到环境变量中;
  3. 学习了解主流网页的数据格式并下载安装python爬虫所需的相关库(含已有的):requests、beautifulsoup4、lxml、pandas、pyecharts、jieba、wordcloud
  4. 学习了解并尝试vscode的主流ai插件和使用包括但不限于:自带的copliot、阿里的Lingma、CodeGPT、CodeGeeX、Cody、TRAE…

环境理解

相关的python库
requests:这是一个简单易用的HTTP库,用于发送各种HTTP请求。支持GET、POST、PUT、DELETE等方法,能够处理会话、Cookie、SSL验证等。可以用于爬虫开发或API接口调用,返回的响应对象可直接获取状态码、头部信息及内容。

beautifulsoup4:这是一个HTML/XML解析库,与requests配合使用。灵活的导航、搜索和修改功能,支持多种解析器(如lxml、html.parser)。通过标签名、属性或CSS选择器定位元素,有了它就能从复杂网页中提取结构化数据。

lxml:支持XPath和CSS选择器。相比beautifulsoup4,其解析速度更快且内存占用更低。

pandas:这是一个数据分析的核心库,提供DataFrame和Series数据结构。支持数据清洗、聚合、时间序列操作及文件读写(CSV、Excel等)。内置统计函数和可视化接口,与NumPy、Matplotlib集成,广泛应用于数据预处理和探索性分析。

pyecharts:这是一个基于ECharts的Python可视化库,支持交互式图表生成。可创建折线图、柱状图、地图等,输出为HTML或图片。配置灵活且支持链式调用,适合动态展示复杂数据关系。

jieba:这是一个中文分词工具,支持精确模式、全模式和搜索引擎模式。提供词性标注、关键词提取及自定义词典功能,适用于文本挖掘和自然语言处理。

wordcloud:这是一个用于生成词云图的工具,通过统计词频可视化文本关键词。支持自定义形状、颜色和停用词,输出为图片或Matplotlib对象。

vscode的ai插件
Copilot:GitHub 推出的官方 AI 编程助手,基于 OpenAI 模型,能力中等,最近还在相当程度上限制了学生认证。

Lingma:虽然有针对中文开发者优化,适合国内开发环境,与阿里云生态有较好兼容性,但据前辈言,其训练集过于老旧,yolo26被报错提示最高到yolo11。

CodeGPT:基于 OpenAI GPT 模型的插件,可自定义 API 密钥,适合需要深度定制的开发者。

CodeGeeX:由清华大学团队开发的多语言代码生成工具,支持 20+ 编程语言。离线运行能力突出,适合对隐私要求较高的场景。

Cody:Sourcegraph 推出的 AI 助手,专注于代码搜索和理解。擅长处理大型代码库,提供代码导航、文档生成等功能,适合团队协作。

TRAE:强调实时错误检测和修复建议。支持多种框架,响应速度快,适合快速迭代的开发场景。

爬虫流程学习

一、数据来源分析

  1. 明确需求
    爬取哪些网站的哪些数据
  2. 抓包分析
    通过浏览器开发者工具分析对应数据的位置
  • 打开开发者工具,F12/右键点击检查选择network(网络面板)
  • 刷新网页/点击下一页/下滑页面/点击加载…,让网页相关数据内容加载出来
  • 通过关键字搜索找到对应数据的位置

二、代码实现步骤

  1. 发送请求
    模拟浏览器对于url地址发送请求

使用开发者工具中请求标头内的参数内容
常用的模拟伪装参数:cookie/referer/ua
代码格式:创建空字典接收参数内容

headers = {
	"cookie":""
	"user-agent":""
}

导入相关库

import requests
url = ''
data = {
'id':''
'content':''
}
response = requests.get(url = url , headers = headers)
  1. 获取数据

获取响应的json数据

json_data = response.json()
print(json_data)
  1. 解析数据

字典取值
键值对取值,根据冒号左边的内容[键],提取冒号右边的内容[值]

json_data = {'code':0,'data':{'A':'1'.'replies':[{'1':'一' , '2':'二'}]}}
# 错误示范
	json_data['data']['replies']

提取内容

dit = {
'':index[''][''],
'':index[''][''],
}
  1. 保存数据

导入csv库

import csv
# 创建csv文件
f = open(file = 'data.csv' , mode = 'w' , encoding = 'utf-8' , newline = '')
#字典写入方法
csv_writer = csv.DictWriter(f , filenames = ['',''])
csv_writer.writeheader()

爬虫相关事项

  1. 遵守robots.txt协议
  2. 尊重网站的服务条款
  3. 控制爬取频率,避免对目标网站造成负担
  4. 重要数据建议添加异常处理和日志记录
  5. 考虑使用分布式爬虫提高效率(Scrapy框架等)

爬虫实践

反爬障碍
部分网站识别到爬虫会封禁IP,例如百度、豆瓣等
用户登录时可能存在较为复杂的验证码
AJAX翻页加密
初次实践
计划是爬取主流社交媒体的热点视频评论区不限于:bilibili、抖音、网易云、微博、知乎、贴吧…
但作为第一次尝试我选择了某网的月度报告,却遭遇滑铁卢,原来刚好最新从静态html升级成了动态AJAX,还得学习相关的克服反爬和数据接口抓取技术
在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐