由于网络架构持续变更,系统服务器有需要进行跨区域迁移。为了方便下次迁移,本文特地记录一下迁移的流程,已被不时之需。
Read more学会使用SFTP命令行
最近又要进行数据备份了,目前需要把整个文件夹下的数据都下载下来,最方便的方案是使用sftp工具进行下载备份。在Windows下我常用FileZilla进行操作,在Mac下还是喜欢使用命令行进行操作。因此,直接使用sftp工具命令行,能够起到事半功倍的效果。以下是一些常用的sftp的命令。
Read moreChromium命令行标准打开方式
每次提到Chromium或者Chrome命令行,大家首先想到的就是Chromium Headless配合Selenium或Puppeteer开发动态爬虫。实际上大多数需要动态渲染的网站只是需要动态渲染,并不需要Selenium或者Puppeteer框架进行交互的。另外,有一些网站对于Selenium或者Puppeteer有检测措施,对于使用这些框架的浏览器会进行反爬取限制。本文主要讨论如何在Chromium在命令行中运行以及Chromium的各种参数。
Read moreHTML页面乱码与Unicode转义
之前写过一篇文章关于《开发爬虫过程中遇到的乱码问题》主要讨论在爬取数据以后使用了错误的编码进行解码加工,导致数据结果出现乱码的问题。这次遇到的问题是在学习Chromium过程中遇到的。本来想学习一下如何防御使用Chromium加上Selenium的爬取。在学习过程中,突然发现获取的数据存在编码问题。字符格式如下:
Read moreChromium无头模式在CentOS中的安装和使用
之前在文章《快速分辨静态页面和动态页面》介绍了如何区分网站静态页面和动态页面的方法。本文将讨论如何爬取动态页面。相比于静态页面,动态页面的爬取要复杂的多。除了加载静态部分的内容以外,还要处理JS动态部分(主要是运行JS代码取数并渲染页面)。虽然这部分也可以通过分析调用方式,调用参数和响应结果来开发特殊爬虫实现,但是开发成本和维护成本都非常高。一般来说,使用通用模版爬虫一天大约能创建15-20个任务,但是如果使用代码开发特殊爬虫可能就只能开发10个爬虫代码。因此,为了保证爬虫开发的效率,仍然是希望通过通用模版配置的方式,进行动态页面的数据爬取。如果要实现这个目标,那么就需要使用Selenium,Puppeteer等通用动态渲染框架(特殊情况下,可能需要使用其他动态渲染方案)。这些底层框架的原理,都是通过调用浏览器来渲染页面,通过浏览器的接口模拟用户点击或者直接运行JS代码。
Read more网页数据爬取24小时入门
数据爬取根据数据源的不同,涉及到的必备技能,工具和实现大不相同。本文主要针对网页数据爬取入手,覆盖以下知识要点:
- HTML基础知识
- 浏览器开发者工具
- XPATH基础知识
- 在开发者工具中使用XPATH定位HTML节点
- 静态页面和动态页面的区别
- 使用开发者工具区分静态页面和动态页面
- 静态页面爬虫开发
- 动态页面爬虫开发
- 页面分析与模版配置
相关参考文档
爬虫技术评估与选型
随着大模型的不断涌现,优质数据是模型训练过程中必不可少的生产资料。目前网上有大量开源的数据集可供下载。对于训练基座模型,通常这些开源的数据集已经足够了。但是对于各种垂直领域的数据需求,特别是需要一些特定数据进行模型微调和优化,数据爬取成为这些特殊领域数据的主要来源和手段。本文将主要分析在数据爬取前如何进行技术评估和选型。
Read more从JS逆向到Python DES解码
使用Edge和Mitmproxy调试模拟百度搜索
先说说事情的起因。最近在调试百度搜索的自动化脚本,但是使用最普通的Python脚本(没有配置任何headers信息)发送搜索请求没有办法返回搜索页面。因此无论使用BeautifulSoap或者lxml都无法从结果中使用xpath抽取需要的字段。多次尝试后会出现302跳转验证码的情况,并且由于Requests脚本是下载的是静态数据,所以直接显示“百度安全验证”信息。但是在本地浏览器中却可以正常访问搜索百度。在这种情况下,通过以下步骤,分析浏览器访问百度的数据包,并用Python实现自动搜索脚本。
Read moreLLM相关技术知识分享
LLM即大语言模型,它具有强大的自然语言处理(NLP)能力(包括理解NLU和生成)。我们可以借助大语言模型的能力帮助我们更好地完成一些工作,包括文本创作、FAQ问答、对话聊天、知识查询、语言翻译、文章摘要、辅助编程等。如果与其他领域的模型组合在一起使用,还能够完成视频语音字幕生成、智能客服问答等相关任务。另外,像文本分类、情感分析、命名实体识别(Named Entity Recognition)等传统的NLP任务就不适合使用LLM来完成,因为这种传统的任务对于LLM来说过于简单了。
Read more