Chromium命令行标准打开方式

每次提到Chromium或者Chrome命令行,大家首先想到的就是Chromium Headless配合Selenium或Puppeteer开发动态爬虫。实际上大多数需要动态渲染的网站只是需要动态渲染,并不需要Selenium或者Puppeteer框架进行交互的。另外,有一些网站对于Selenium或者Puppeteer有检测措施,对于使用这些框架的浏览器会进行反爬取限制。本文主要讨论如何在Chromium在命令行中运行以及Chromium的各种参数。

Read more

HTML页面乱码与Unicode转义

之前写过一篇文章关于《开发爬虫过程中遇到的乱码问题》主要讨论在爬取数据以后使用了错误的编码进行解码加工,导致数据结果出现乱码的问题。这次遇到的问题是在学习Chromium过程中遇到的。本来想学习一下如何防御使用Chromium加上Selenium的爬取。在学习过程中,突然发现获取的数据存在编码问题。字符格式如下:

Read more

Chromium无头模式在CentOS中的安装和使用

之前在文章《快速分辨静态页面和动态页面》介绍了如何区分网站静态页面和动态页面的方法。本文将讨论如何爬取动态页面。相比于静态页面,动态页面的爬取要复杂的多。除了加载静态部分的内容以外,还要处理JS动态部分(主要是运行JS代码取数并渲染页面)。虽然这部分也可以通过分析调用方式,调用参数和响应结果来开发特殊爬虫实现,但是开发成本和维护成本都非常高。一般来说,使用通用模版爬虫一天大约能创建15-20个任务,但是如果使用代码开发特殊爬虫可能就只能开发10个爬虫代码。因此,为了保证爬虫开发的效率,仍然是希望通过通用模版配置的方式,进行动态页面的数据爬取。如果要实现这个目标,那么就需要使用Selenium,Puppeteer等通用动态渲染框架(特殊情况下,可能需要使用其他动态渲染方案)。这些底层框架的原理,都是通过调用浏览器来渲染页面,通过浏览器的接口模拟用户点击或者直接运行JS代码。

Read more

网页数据爬取24小时入门

数据爬取根据数据源的不同,涉及到的必备技能,工具和实现大不相同。本文主要针对网页数据爬取入手,覆盖以下知识要点:

  • HTML基础知识
  • 浏览器开发者工具
  • XPATH基础知识
  • 在开发者工具中使用XPATH定位HTML节点
  • 静态页面和动态页面的区别
  • 使用开发者工具区分静态页面和动态页面
  • 静态页面爬虫开发
  • 动态页面爬虫开发
  • 页面分析与模版配置

相关参考文档

Learn HTML

Chrome Dev Tools

XPATH教程

爬虫技术评估与选型

随着大模型的不断涌现,优质数据是模型训练过程中必不可少的生产资料。目前网上有大量开源的数据集可供下载。对于训练基座模型,通常这些开源的数据集已经足够了。但是对于各种垂直领域的数据需求,特别是需要一些特定数据进行模型微调和优化,数据爬取成为这些特殊领域数据的主要来源和手段。本文将主要分析在数据爬取前如何进行技术评估和选型。

Read more

从JS逆向到Python DES解码

写教程比较麻烦的地方是提供一个可行的事例,对于逆行来说,这里可能会碰触到合法合规的问题。毕竟逆向和破解是分不开的。因此本文中相关的JS逆向,只能空口说说,任何截图可能会出现意想不到的问题。本文主要是讲解如何使用开发者工具调试和分析网站的数据访问控制,加密手段等。

对于网站调试,Chrome的开发者工具是个好东西(Firefox和Edge的也很好用)。例如A网站向服务器发起一个获取密钥的操作。通过开发者工具的网络检查数据包,通过源代码中的XHR断点,追踪XHR调用和返回,可以大致找到JS对数据的后续操作。

Read more

使用Edge和Mitmproxy调试模拟百度搜索

先说说事情的起因。最近在调试百度搜索的自动化脚本,但是使用最普通的Python脚本(没有配置任何headers信息)发送搜索请求没有办法返回搜索页面。因此无论使用BeautifulSoap或者lxml都无法从结果中使用xpath抽取需要的字段。多次尝试后会出现302跳转验证码的情况,并且由于Requests脚本是下载的是静态数据,所以直接显示“百度安全验证”信息。但是在本地浏览器中却可以正常访问搜索百度。在这种情况下,通过以下步骤,分析浏览器访问百度的数据包,并用Python实现自动搜索脚本。

Read more

LLM相关技术知识分享

LLM即大语言模型,它具有强大的自然语言处理(NLP)能力(包括理解NLU和生成)。我们可以借助大语言模型的能力帮助我们更好地完成一些工作,包括文本创作、FAQ问答、对话聊天、知识查询、语言翻译、文章摘要、辅助编程等。如果与其他领域的模型组合在一起使用,还能够完成视频语音字幕生成、智能客服问答等相关任务。另外,像文本分类、情感分析、命名实体识别(Named Entity Recognition)等传统的NLP任务就不适合使用LLM来完成,因为这种传统的任务对于LLM来说过于简单了。

Read more